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()
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)
python 可以快一點
https://chiendavid.blogspot.com/2020/02/zerojudge-a010.html