N的阶乘写作N!表示小于等于N的所有正整数的乘积。
阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。
你的任务是找到阶乘最后面的非零位。举个例子:
5!=1*2*3*4*5=120所以5!的最后面的非零位是2
7!=1*2*3*4*5*6*7=5040,所以最后面的非零位是4
格式
PROGRAM NAME: fact4
INPUT FORMAT:
(file fact4.in)
共一行,一个整数不大于4,220的整数N。
OUTPUT FORMAT:
(file fact4.out)
共一行,输出N!最后面的非零位。
SAMPLE INPUT
7
SAMPLE OUTPUT
4
【参考程序】:
/*
ID: XIONGNA1
PROG: fact4
LANG: C++
*/
#include<iostream>
using namespace std;
int n;
int main()
{
freopen("fact4.in","r",stdin);
freopen("fact4.out","w",stdout);
scanf("%d",&n);
long long ans=1,re=0,k;
for (int i=1;i<=n;i++)
{
k=i;
while (k%2==0)
{
re++; k/=2;
}
while (k%5==0)
{
re--; k/=5;
}
ans=(ans*k)%10;
}
for (int i=1;i<=re;i++)
ans=(ans*2)%10;
printf("%lld\n",ans);
return 0;
}