大数相乘

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 }

 

posted @ 2013-05-10 20:30  海东青飞吧!  阅读(399)  评论(0编辑  收藏  举报