http://acm.hdu.edu.cn/showproblem.php?pid=1042
很显然是个大数问题,,阶乘这东西整个是几何增加。另外里边n《10000,所以用来处理的数组每一位不存一位了,一位存储10000,但是
又要考虑到输出问题,如果这个得到的是1,输出应该是0001,因为你一个位就代表了0~9999 用%04d 输出
Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
Input
One N in one line, process to the end of file.
Output
For each N, output N! in one line.
Sample Input
1 2 3
Sample Output
1 2 6
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
int n,i,j;
while(scanf("%d",&n)!=EOF)
{
int k=0,a;
if(n==0)
{
printf("1\n");
continue;
}
int s[100000];
memset(s,0,100000);
s[0]=1;
for(i=1;i<=n;i++)
{
a=0;
for(j=0;j<=k;j++)
{
s[j]=s[j]*i+a;
a=s[j]/10000;
s[j]=s[j]%10000;
}
if(a)
s[++k]=a;
}
printf("%d",s[k]);
for(i=k-1;i>=0;i--)
printf("%04d",s[i]);
printf("\n");
}
return 0;
}