大整数相乘

 1 #include<iostream>
 2 #include<map>
 3 #include<vector>
 4 #include<stack>
 5 using namespace std;
 6 int main(){
 7     char a[101],b[101];
 8     int ans[220],len_ans;
 9     cin>>a>>b;
10     
11     int la=strlen(a);
12     int lb=strlen(b);
13     
14     int *na=(int *)malloc(la*sizeof(int));
15     int *nb=(int *)malloc(lb*sizeof(int));
16     
17     for(int i=la-1;i>=0;i--){
18         na[i]=a[la-i-1]-'0';
19     }
20     for(int i=lb-1;i>=0;i--){
21         nb[i]=b[lb-i-1]-'0';
22     }
23     
24     memset(ans,0,sizeof(ans));
25     for(int i=0;i<la;i++){
26         for(int j=0;j<lb;j++){
27             ans[i+j]+=na[i]*nb[j];
28         }
29     }
30     int add=0;
31     len_ans=la+lb;
32     for(int i=0;i<la+lb-1;i++){
33         if(ans[i]>=10){            
34             ans[i+1]+=ans[i]/10;
35             ans[i]=ans[i]%10;
36         }
37     }
38     while(ans[len_ans-1]==0) len_ans--;
39     for(int i=len_ans-1;i>=0;i--){
40         cout<<ans[i];
41     }cout<<endl;
42 }

 

posted @ 2015-09-26 08:42  流白  阅读(163)  评论(0编辑  收藏  举报