主要是看出末尾最多有几个0么么哒。
1249个 因为一个5的倍数产生一个零,25的倍数产生二个零 125的倍数产生三个零,625的倍数产生四个零 3025产生五个零,前面计算过的不说,都比前面的多产生一个零 5,10,15,...,5000 一共1000个 25,50,75,...,5000 共200个 125,250,...,5000 共40个 625,1250,...,5000 共8个 3025 只有1个 所以共有1249个零#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
int ss[2200];
int main()
{
//freopen("fact4.in","r",stdin);
//freopen("fact4.out","w",stdout);
int n;
cin>>n;
ss[1]=1;
int ll=1;
for(int i=2;i<=n;i++)
{
int k=0;
for(int j=1;j<=ll;j++)
{
k=ss[j]*i+k;
ss[j]=k%10;
k/=10;
}
while(k!=0&&ll<2200)
{
ss[++ll]=k%10;
k/=10;
}
}
int i=1;
while(ss[i]==0)
i++;
cout<<ss[i]<<endl;;
return 0;
}