SDIBT 2345 (3.2.1 Factorials 阶乘)

时间:2023-03-09 17:18:52
SDIBT 2345  (3.2.1 Factorials 阶乘)

Description

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。

Input

共一行,一个整数不大于4,220的整数N。

Output

共一行,输出N!最后面的非零位。

Sample Input

7

Sample Output

4
 #include <stdio.h>

 int main()
{
int n,date[],cnt=;
int i,sum=;
scanf("%d",&n);
for(i=n; i>=; i--)
{
date[i]=i;
while(date[i]%==) //剔除5
{
date[i]/=;
cnt++;
}
}
for(i=n; i>=; i--) //剔除同样多的2,这样就不会出现10了
{
if(cnt==)
break;
while(date[i]%==&&cnt!=)
{
date[i]/=;
cnt--;
}
}
for(i=n; i>=; i--)
sum=(sum*date[i])%;
printf("%d\n",sum);
return ;
}