题目链接

题目描述
输入一个正整数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;
    }
}
Last modification:September 21st, 2019 at 12:06 am
如果觉得我的文章对你有用,请随意赞赏