Prob_Solve 板


LINE

這是Project Euler的160題 題目是這樣的: For any N, let f(N) be the last five digits before the trailing zeroes in N!. For example, 9! = 362880 so f(9)=36288 10! = 3628800 so f(10)=36288 20! = 2432902008176640000 so f(20)=17664 Find f(1,000,000,000,000) 以下是目前我再run的程式碼(Python): #!/usr/bin/env python 'p160' from time import time def fac_cut(n): tmp=1 if 1==n:return 1 for i in xrange(2,n+1): tmp=tmp*(int(str(i).strip('0'))%100000) tmp=int(str(tmp).strip('0')) tmp%=100000 return tmp if __name__ == '__main__': tStart=time() print '1000000000000! = ', fac_cut(1000000000000) print 'run time = ' ,str(time()-tStart) 我的想法是這樣: 以計算階乘的方式,tmp*回圈裡的i值,當用python的strip()方法將tmp尾端的0 全部去除,並只取最後5位不為0的數值 回圈裡的i值也是一樣,當i值尾端有0時,用strip()方法去掉0,並保留末5位不為0 的數值和tmp相乘 目前我的問題是,一兆!實在是太龐大了,我跑到6億!時用去了我3小時的時間 如此推斷,要跑到一兆!要非常久遠的時間 曾經想過歸納法,於是我用同樣的程式找出如下數值的末端5位非0值: 10! = 36288 100! = 16864 1000! = 53472 10000! = 79008 100000! = 2496 1000000! = 31104 10000000! = 91104 100000000! = 51104 但是一兆!的答案卻不是91104,不知道還有什麼方法可以破解此題 請前輩指教 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.244.223
1F:推 LPH66:唔...我用Mathematica暴力跑f(十萬)的答案是62496 08/28 12:43
2F:→ LPH66:我猜這種方法可能會有奇怪的誤差 像是被你捨去的位數有可能 08/28 12:44
3F:→ LPH66:會影響答案之類的問題 08/28 12:44
4F:→ LPH66:舉個簡單的例子 若求末位非0值的話 若只留1位 到15!就錯了 08/28 12:47
5F:→ LPH66:14!=87178291200 => 2; 15!=1307674368000 => 8 08/28 12:50
6F:推 ckclark:把5和2都留到最後再算會好一點 08/28 14:13
7F:→ ckclark:提示 1~10000 去掉5的倍數相乘是 ...09376 其為自守數 08/28 14:16
8F:推 ckclark:解出來後在討論區可以看到各種神妙解 08/28 14:39
9F:推 irix2007:16576...我用觀察法發現的. 如前面 LPH66 大大說的, 08/28 15:54
10F:→ irix2007:會有奇怪誤差. 所以我都是用保留7位來運算 08/28 15:55
11F:→ irix2007:然後解到100萬時, 每1萬列出結果, 觀察發現差5倍, 後五位 08/28 15:56
12F:→ irix2007:一樣. 所以一兆的後5位餘數和用2560000來算一樣.. 08/28 15:59
13F:→ irix2007:但我還不知原因..只是運氣好看出這規律 08/28 16:00
14F:推 SCSonic:這規律可以推測出來的 多點經驗就會往這方面想了 08/28 16:38
15F:→ coldnew:感謝前輩們的指導^^ 08/28 17:04
16F:→ neverfly:用Java的BigInteger硬幹(逃) 08/29 19:03
17F:推 powertodream:唔10000! 去掉 5 後五位 09376 是自首數 怎麼發現的? 08/29 19:24
18F:→ powertodream:所以 一兆的階層 去掉五, 後五位也是 09376 08/29 19:25
19F:→ powertodream:之後沒做到的5 慢慢算嗎? 08/29 19:25







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP