看板 Python 關於我們 聯絡資訊
我最近在玩OnlineJudge 有一個網站叫做Sphere,他可以支援Python, 但是有一個小問題,就是因為他還支援別種語言,所以Time limit基本上沒有設很寬。 我的題目是這樣: 第一行輸入總共有幾個數字 接下來就讀入N行 輸出的結果是(input)!後面有幾個零 階層(factorial) Sample Input: 6 3 60 100 1024 23456 8735373 Sample Output: 0 14 24 253 5861 2183837 我的code: from math import factorial number=input() while number>0: temp=str(factorial(int(raw_input())))[::-1] if temp[0]!='0': print '0' else: for i in range(len(temp)): if temp[i+1]!='0': print i+1 break number-=1 其實我覺得這樣的運算量已經很少了,但是好像很慢。 請問大家有什麼改進運算速度的方法, 或是通常都用哪些方式來減少程式碼的運算量。 謝謝^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.205.11
Dannvix:這種題目直接做factorial太慢了,想想數學解 04/10 13:06
Dannvix:就算用C直接做大數factorial也還是會Time Limit Exceed吧 04/10 13:06
Dannvix:hint: 質因數分解 04/10 13:08
carlcarl:一看就覺得不能用正常的方式來算0.0a 要用點小技巧 04/10 13:51
sbrhsieh:計算的東西不同,但或許對你有些幫助 04/10 14:29
sbrhsieh:N! 尾數:http://ppt.cc/85qa 04/10 14:30