描述
計算n!的十進位制表示最後有多少個0
輸入第一行輸入乙個整數n表示測試資料的組數(1<=n<=100)
每組測試資料佔一行,都只有乙個整數m(0<=m<=10000000)
輸出輸出m的階乘的十進位制表示中最後0的個數
比如5!=120則最後的0的個數為1
樣例輸入
63601001024
23456
8735373
分析:
0**於2*5,且將n!中分解後,2的個數大於5的個數所有,0的個數就等於n!中銀子5的個數。
f(n!)=1*2*3*4*5*6*7*…(2*5)…(3*5)***(4*5) ….(k*5)* … n
只考慮5的倍數:其他的必然沒有5.
抽取出來:
5*(1*2*3*k*) (其他的數) 現在已經有k個5了,但是k!中可能含有5,公式為
f(n)=k+f(k!) k=n/5;
k<5,時候,沒有0,所以f(n!)=0;k<=4;
遞迴寫法就很簡單了。
int fun(int n)
仔細分析後,其實最終就是求n!因子5的個數。
privatestatic
int fun2(int
n) }}
return
count;
}
在nyoj 提交之後發現,遞迴的效果還不錯。
nyoj 84 階乘的0 規律題
記憶體限制 64mb 時間限制 3000ms 特判 no 通過數 7 提交數 9 難度 3 計算n 的十進位制表示最後有多少個0 第一行輸入乙個整數n表示測試資料的組數 1 n 100 每組測試資料佔一行,都只有乙個整數m 0 m 10000000 輸出m的階乘的十進位制表示中最後0的個數 比如5 ...
nyoj 84 階乘的0(數學技巧)
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 計算n 的十進位制表示最後有多少個0 輸入第一行輸入乙個整數n表示測試資料的組數 1 n 100 每組測試資料佔一行,都只有乙個整數m 0 m 10000000 輸出輸出m的階乘的十進位制表示中最後0的個數 比如5 120則最後...
南陽 84 階乘的0
描述 計算n 的十進位制表示最後有多少個0 輸入第一行輸入乙個整數n表示測試資料的組數 1 n 100 每組測試資料佔一行,都只有乙個整數m 0 m 10000000 輸出輸出m的階乘的十進位制表示中最後0的個數 比如5 120則最後的0的個數為1 樣例輸入63 60100 1024 23456 8...