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
要求计算10000以内的阶乘,典型的大数问题.这里用的是 五位一存的方法. 关于X位一存的解释可以看这篇文章. 注意特殊情况(0,1)下的处理.
#include
#include
#define MOD 100000
int main()
{
int a[8000];
int i,k,n,t,la;
while(~scanf("%d",&n))
{
if(n==0||n==1) {printf("1\n");continue;}
a[0] = 1;
la = 1;
t = 0;
for(k=2; k 0)
{
a[la++] = t;
t = 0;
}
}
printf("%d",a[la-1]);
for(i=la-2; i>=0; i--)
printf("%05d",a[i]);
printf("\n");
}
return 0;
}
原文标题:HDOJ1042:N!–大数|落絮飞雁的个人网站
授权协议:创作共用 署名-非商业性使用 2.5 中国大陆
除注明外,本站文章均为原创;转载时请保留上述链接。
只会在水泥地上走路的人,永远不会留下深深的脚印。
思考是一件最辛苦的工作,这可能是为什么很少人愿意思考的原因。
感谢回复