计算n!(1<=n<=10000)
在去南昌icpc邀请赛之前,勋宇带着我们做过大数的题,刚好也是这个题。而我影响最深刻的就是运用到万进制,顾名思义,以一万为进制,因为n!是个很大的数,所以只能用数组去存。
需要注意的是打印时,倒叙且%04d,不足的用零去补。
附上代码:
#include <stdio.h>
#include <stdlib.h>
void fun(int x)
{
int i,j;
int num[10000]={1};
int dights=1;
for(i=2;i<=x;i++)
{
int jinwei=0;
for(j=0;j<dights;j++)
{
int temp=num[j]*i+jinwei;
num[j]=temp%10000;
jinwei=temp/10000;
}
if(jinwei>0)
{
num[dights]=jinwei;
dights++;
}
}
printf("%d",num[dights-1]);
for(i=dights-2;i>=0;i--)
{
printf("%04d",num[i]);
}
printf("\n");
}
int main()
{
int a;
while(scanf("%d",&a)!=EOF)
{
fun(a);
}
return 0;
}