大数阶乘N!(N<=1000)

    模拟大数乘法,将结果的每5位存在数组a[]中,以提高运算速度。
 1 #include<iostream>
 2 const int N = 100000;
 3 int main(){
 4     int i,j,n,a[10000];
 5     while(scanf("%d",&n)!=EOF){
 6         memset(a,0,sizeof(a));
 7         for(a[0]=j=1;j<=n;j++){
 8             for(i=0;i<10000;i++) a[i]*=j;
 9             for(i=0;i<9999;i++)
10                 if(a[i]>=N){
11                     a[i+1]+=a[i]/N;
12                     a[i]%=N;
13                 }
14         }
15         for(i=9999;i>=0;i--)
16             if(a[i]) break;
17         printf("%d",a[i]);
18         for(j=i-1;j>=0;j--) printf("%05d",a[j]);
19         printf("\n");
20     }
21     return 0;
22 }

posted on 2009-04-23 14:23 极限定律 阅读(680) 评论(0)  编辑 收藏 引用 所属分类: ACM/ICPC


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

常用链接

留言簿(10)

随笔分类

随笔档案

友情链接

搜索

最新评论

阅读排行榜

评论排行榜