题目描述
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1e3 +5;
int num[maxn];
int vis[maxn];
void is_prime5();
int main()
{
int n,ans;
for(int i=1;i<maxn;i++) num[i]=i;
memset(vis,0,sizeof(vis));
is_prime5();
while(cin>>n)
{
ans=0;
for(int i=1;i<=n;i++)
{
if(vis[i]) ans+=vis[i];
}
cout<<ans<<endl;
}
return 0;
}
void is_prime5()
{
int cnt,temp;
for(int i=1;i<maxn;i++)
{
cnt=0;
temp=num[i];
if(num[i]%5==0)
{
while(temp%5==0)
{
temp/=5;
cnt++;
}
}
vis[i]=cnt;
}
}