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
code:
//模拟算数成法中的进位;
#include <stdio.h>
#include <string.h>
int main()
{
int i = 0, j = 0, c = 0, n = 0, s = 0, ans[8000] = {0}, count = 0;
while(scanf("%d",&n) != EOF)
{
count = 0;
memset(ans,0,sizeof(ans));
ans[count++] = 1;
for(i = 2; i<=n; i++)
{
c = 0;
for(j = 0; j<count; j++)//只乘到已保存位的数;
{
s = ans[j]*i+c;//加上上回的进位;
ans[j] = s%100000;//更新当前节点值;
c = s/100000;更新进位值;
}
while(c)//存储最后一个数乘i的进位;
{
ans[count++] = c%100000;
c = c/100000;
}
}
printf("%d",ans[--count]);
while(count>0)
printf("%.5d",ans[--count]);//由于模的是100000,说以每位都有5个数,不足的在前面加0补足;
printf("\n");
}
return 0;
}
Problem DescriptionGiven an integer N(0 ≤ N ≤ 10000), your task is to calculate N! InputOne N in one line, process to the end of file. OutputFor each N, output N! in one line. Sample In