1027 大数乘法

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 
给出2个大整数A,B,计算A*B的结果。
 
Input
第1行:大数A
第2行:大数B
(A,B的长度 <= 1000,A,B >= 0)
Output
输出A * B
Input示例
123456
234567
Output示例
28958703552

大数乘法模板,当然这不是最优算法。
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 string s,ss;
 4 
 5 string bigmulti(string s,string ss){
 6     int slen = s.length();
 7     int sslen= ss.length();
 8     int st[20100];
 9     string tt="";
10     reverse(s.begin(),s.end());
11     reverse(ss.begin(),ss.end());
12     for(int i=0;i<slen;i++){
13         for(int j=0;j<sslen;j++){
14             st[i+j] += (s[i]-'0')*(ss[j]-'0');
15         }
16     }
17     for(int i=0;i<slen+sslen;i++){
18         st[i+1]+=st[i]/10;
19         st[i]=st[i]%10;
20     }
21     int index;
22     for(int i=slen+sslen;i>=0;i--){
23         if(st[i]!=0){
24             index = i;
25             break;
26         }
27     }
28     for(int i=0;i<=index;i++){
29         tt+=st[i]+'0';
30     }
31     reverse(tt.begin(),tt.end());
32     return tt;
33 }
34 int main(){
35     while(cin>>s>>ss){
36         bool sflag=true, ssflag=true;
37         if(s[0]=='-'){
38             s.erase(0,1);
39             sflag = false;
40         }
41         if(ss[0]=='-'){
42             ss.erase(0,1);
43             ssflag = false;
44         }
45         cout<<bigmulti(s,ss)<<endl;
46     }
47     return 0;
48 }
原文地址:https://www.cnblogs.com/zllwxm123/p/8947133.html