思想:直接模拟乘法运算,最后统一处理进位。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s1,s2;
while(cin>>s1>>s2){
if(s1=="0" || s2=="0"){
cout<<"0\n";continue;
}
int len1=s1.size();
int len2=s2.size();
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
int ans[len1+len2]={0};
for(int i=0;i<len1;i++){
for(int j=0;j<len2;j++){
ans[i+j]+=(s1[i]-'0')*(s2[j]-'0');
//后面统一处理进位;
}
}
for(int i=0;i<len1+len2;i++){
if(ans[i]>9){
int temp=ans[i]/10;
ans[i]%=10;
ans[i+1]+=temp;
}
}
int pos=ans[len1+len2-1]==0? (len1+len2-2):(len1+len2-1);
string result="";
for(;pos>=0;pos--){
result+=(ans[pos]+'0');
}
cout<<result<<endl;
}
return 0;
}