#20334: Python可能遇到的困難


TCFSH69 (TCFSH)

學校 : 國立臺中第一高級中學
編號 : 81602
來源 : [140.116.191.189]
最後登入時間 :
2022-09-01 23:15:51
a010. 因數分解 | From: [122.118.19.182] | 發表日期 : 2020-01-05 20:11

1.想要使用while卻怕EOFError

Sol:試試下列寫法(try & except)

while 1:

    try:

        ...

    except EOFError:

    break

 

2.質因數分解

Sol:最簡單的想法就夠快了 如下

用for i in range(2,n+1)

讓i去除n

如果可以整除

那就讓n = n/i

 

3.煩人的輸出格式

Sol.1:我自己是用兩個陣列(box1,box2)分別記錄n所含的質數,以及每個質數的個數

Sol.2:重點有二:利用print(str()+str())去掉預設的空格,以及利用tmp(一開始=0)來計算到底i是不是最後一個質數了,便可阻止'*'繼續印出

for i in box2:
    if box1.count(i) == 1:
        print(str(i),end = ' ')
    else:
        print(str(i)+'^'+str(box1.count(i)),end = ' ')
        tmp = tmp + 1
    if tmp != len(box2):
    print('*',end = ' ')
print()

 
#20708: Re:Python可能遇到的困難


devil1004@livemail.tw (蘇彥儒)

學校 : 不指定學校
編號 : 115422
來源 : [223.138.229.13]
最後登入時間 :
2023-07-20 16:45:45
a010. 因數分解 | From: [42.76.179.181] | 發表日期 : 2020-02-23 11:14

1.想要使用while卻怕EOFError

Sol:試試下列寫法(try & except)

while 1:

    try:

        ...

    except EOFError:

    break

 

2.質因數分解

Sol:最簡單的想法就夠快了 如下

用for i in range(2,n+1)

讓i去除n

如果可以整除

那就讓n = n/i

 

3.煩人的輸出格式

Sol.1:我自己是用兩個陣列(box1,box2)分別記錄n所含的質數,以及每個質數的個數

Sol.2:重點有二:利用print(str()+str())去掉預設的空格,以及利用tmp(一開始=0)來計算到底i是不是最後一個質數了,便可阻止'*'繼續印出

for i in box2:
    if box1.count(i) == 1:
        print(str(i),end = ' ')
    else:
        print(str(i)+'^'+str(box1.count(i)),end = ' ')
        tmp = tmp + 1
    if tmp != len(box2):
    print('*',end = ' ')
print()


我第一次AC的作法跟你吃差不多

後來想到 質因數分解的迴圈可以 for i in range(2,n+1) :

變成 for i in [2] + list(range(3,n+1,2):

跳過除了 2 以外的所有偶數

AC的時間 縮短了 0.9秒  (2S -> 1.1S)

 
#20938: Re:Python可能遇到的困難


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.172]
最後登入時間 :
2024-04-24 20:07:19
a010. 因數分解 | From: [61.223.34.201] | 發表日期 : 2020-03-21 13:30

python 可以快一點

https://chiendavid.blogspot.com/2020/02/zerojudge-a010.html

 
 
ZeroJudge Forum