阶乘
题目描述
N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!=12345=120所以5!的最后面的非零位是2,7!=1234567=5040,所以最后面的非零位是4。
输入
共一行,一个整数不大于4,220的整数N。
输出
共一行,输出N!最后面的非零位。
样例输入
7
样例输出
4
简单粗暴的大数乘法
#include<stdio.h>
int a[100000];
int main()
{
int i,j,k,s,l=0,n;
scanf("%d",&n);
a[0]=1;
//计算出前n个数的和,简单暴力。
for(i=1;i<=n;i++)
{
int x=0,y=0;
for(j=0;j<10000;j++)
{
x=a[j]*i+y;
y=x/10;
a[j]=x%10;
}
}
for(i=0;;i++)//循环遍历第一个不为0的数就是计算出来的末尾不为0的第一个数!
{
if(a[i]!=0)
{
printf("%d\n",a[i]);
break;
}
}
}