1. 程式人生 > >nyoj 階乘0

nyoj 階乘0

log name iostream gpo using n! += spa table

階乘的0

時間限制:3000 ms | 內存限制:65535 KB 難度:3
描述
計算n!的十進制表示最後有多少個0
輸入
第一行輸入一個整數N表示測試數據的組數(1<=N<=100)
每組測試數據占一行,都只有一個整數M(0<=M<=10000000)
輸出
輸出M的階乘的十進制表示中最後0的個數
比如5!=120則最後的0的個數為1
樣例輸入
6
3
60
100
1024
23456
8735373
樣例輸出
0
14
24
253
5861
2183837

#include<iostream>
using namespace std;
int main()
{
int n,m;
cin>>n;
while(n--)
{
int ans=0;
cin>>m;
while(m)
{
ans+=m/5;
m/=5;
}
cout<<ans<<endl;
}
return 0;
}

思路:

在計算階乘的時候,2*5會出現0,所以解題的關鍵在於計算2和5的對數,因為5的個數比2的個數多,所以求5的個數即可

如:100中計算是5的倍數則用100/5,又因為5 10 15這算是一個5, 25 50 100這算是兩個5 75 150這算是3個5,

所以計算5的倍數+25的倍數+75的倍數即可。

nyoj 階乘0