大数相乘
123*123=:
1 2 3
1 2 3
-------------------------
3 6 9
2 4 6
1 2 3
--------------------------
1 5 1 2 9
9=3*3;2=2*3+3*2%10;。。。。。。
1 #include<stdio.h> 2 #include<string.h> 3 #define N 50000 4 5 int main() 6 { 7 int n,m,i,j,leap,max; 8 int a[300],b[300],r[N]; 9 char st1[300],st2[300]; 10 gets(st1); 11 gets(st2); 12 n=strlen(st1); 13 m=strlen(st2); 14 memset(a,0,sizeof(a)); 15 memset(b,0,sizeof(b)); 16 memset(r,0,sizeof(r)); 17 for(i=0;i<n;i++) 18 a[i]=st1[n-1-i]-'0'; 19 for(i=0;i<m;i++) 20 b[i]=st2[m-1-i]-'0'; 21 for(i=0;i<n;i++) 22 { 23 for(j=0;j<m;j++) 24 { 25 r[i+j]=r[i+j]+a[i]*b[j]; 26 } 27 } 28 leap=0; 29 max=n+m-1; 30 for(i=0;i<max;i++) 31 { 32 r[i]=r[i]+leap; 33 r[i]=r[i]%10; 34 leap=r[i]/10; 35 } 36 //if(leap!=0) 37 //r[i]=leap,max++; 38 for(j=max;j>=0;j--)//排除前导0; 39 { 40 if(r[j]!=0)break; 41 } 42 for(i=j;i>=0;i--) 43 printf("%d",r[i]); 44 printf("\n"); 45 return 0; 46 }