[討論] 提昇Python執行的速度

看板Python作者 (我只是QQ糖)時間15年前 (2010/04/10 12:25), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/6 (看更多)
我最近在玩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

04/10 13:06, , 1F
這種題目直接做factorial太慢了,想想數學解
04/10 13:06, 1F

04/10 13:06, , 2F
就算用C直接做大數factorial也還是會Time Limit Exceed吧
04/10 13:06, 2F

04/10 13:08, , 3F
hint: 質因數分解
04/10 13:08, 3F

04/10 13:51, , 4F
一看就覺得不能用正常的方式來算0.0a 要用點小技巧
04/10 13:51, 4F

04/10 14:29, , 5F
計算的東西不同,但或許對你有些幫助
04/10 14:29, 5F

04/10 14:30, , 6F
N! 尾數:http://ppt.cc/85qa
04/10 14:30, 6F
文章代碼(AID): #1Bl_s-A4 (Python)
文章代碼(AID): #1Bl_s-A4 (Python)