模拟大数乘法,将结果的每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 }