大数的乘法

 1 #include<iostream>
 2 #include<string.h>
 3 #define MAX 100
 4 void change(char *st , int len);
 5 using namespace std;
 6 
 7 
 8 int main()
 9 {
10     char st1[MAX] , st2[MAX];
11     int st3[2*MAX] = {0};
12     scanf("%s%s" , st1 , st2);
13     int len1 , len2 , len3;
14     int i , j;
15     len1 = strlen(st1);
16     len2 = strlen(st2);
17     change(st1 , len1);       //将数字翻转
18     change(st2 , len2);
19     for(i = 0; i < len1; i++)  //大数乘法核心代码
20     {
21         for(j = 0; j < len2; j++)
22         {
23             st3[i+j] += (st1[i]-'0')*(st2[j]-'0');
24             st3[i+j+1] += st3[i+j] / 10;
25             st3[i+j] %= 10;
26         }
27     }
28     len3 = len1+len2+1;
29     while(!st3[len3])
30     {len3--;}
31     for(i = len3; i >= 0; i--)       //输出
32         cout<<st3[i];
33     cout<<endl;
34     return 0;
35 }
36 
37 void change(char *st , int len)
38 {
39     int i , j;
40     char temp;
41     for(i =0, j = len-1; i <= j; i++, j--)
42     {
43         temp = st[i];
44         st[i] = st[j];
45         st[j] = temp;
46     }
47 }

 

posted on 2013-05-06 21:46  nigel_jw  阅读(172)  评论(0)    收藏  举报

导航