題目:http://poj.org/problem?id=1401
(經典問題)
給一正整數N介於1...1000000000,問N!尾綴連續有幾個0呢?
好比說15!=1307674368000,答案就是3
程式碼:http://codepad.org/5yyKjqXc
我們知道如果有3個0,就意味10^3是15!的一個因數(而且10^4不是)
那麼怎麼樣知道15*14*...*3*2*1能存在最大的因數10^i是多少呢?
把10質因數分解一下:10=5*2
阿哈!就是這個
只要統計最大的因數5^i,i就是答案
為什麼呢?因為質因數2比質因數5容易出現太多太多,有幾個5就能(湊出來)有幾個10
所以我們模仿轉2進位那樣,試著轉出5進位,好比說範例測資1024:
1024 / 5 = 204...具有5當因數的各數
204 / 5 = 40...具有5^2因數的各數
40 / 5 = 8...具有5^3
8 / 5 = 1...具有5^4
所以加總得到答案253
沒有留言:
張貼留言