参考编程之美2.2不要被阶乘吓倒
N!末尾0的个数,即等于因子10的个数,又10=2*5,所以N!末尾0的个数即因子5的个数(因为能被2整除的数出现的频率比能被5整除的数高得多)。
#include <iostream>
using namespace std;
int Count1(int n)
{
int count=0;
int j;
for(int i=1; i<=n; i++)
{
j=i;
while(j%5==0)
{
count++;
j/=5;
}
}
return count;
}
int Count2(int n)
{
int count=0;
while(n)
{
count+=n/5;
n/=5;
}
return count;
}
int main()
{
int n;
cin>>n;
cout<<Count1(n)<<endl;
cout<<Count2(n)<<endl;
}