-10^100<=a,b<=10^100
2025-11-23 14:06:35
发布于:香港
0阅读
0回复
0点赞
#include<bits/stdc++.h>
#define int long long
using namespace std;
string hf_add(string a,string b){
string x="",y="";
for(int i=a.size()-1;i>=0;i--)x+=a[i];
for(int i=b.size()-1;i>=0;i--)y+=b[i];
int len=max(x.size(),y.size()),k=0;
string c="";
for(int i=0;i<len;i++){
int sum=k;
if(i<x.size())sum+=(x[i]-'0');
if(i<y.size())sum+=(y[i]-'0');
c+=(sum%10)+'0';
k=sum/10;
}
if(k)c+=(k+'0');
string c_pal="";
for(int i=c.size()-1;i>=0;i--)c_pal+=c[i];
return c_pal;
}
string strabs(string n){
if(n[0]=='-'){
string n_pos="";
for(int i=1;i<n.size();i++)n_pos+=n[i];
return n_pos;
}
return n;
}
signed main(){
string a,b;
string e="";
cin>>a>>b;
if(a[0]=='-'){
e="-";
a=strabs(a);
}if(b[0]=='-'){
e=(e=="-"?"":"-");
b=strabs(b);
}if(a=="0"||b=="0"){
cout<<"0";
return 0;
}else if(a=="1"){
cout<<e<<b;
return 0;
}else if(b=="1"){
cout<<e<<a;
return 0;
}
vector<string>str;
for(int i=b.size()-1;i>=0;i--){
int k=0;
string c="";
for(int j=a.size()-1;j>=0;j--){
int pro=(a[j]-'0')*(b[i]-'0')+k;
c+=(pro%10)+'0';
k=pro/10;
}
if(k)c+=(k+'0');
string c_pal="";
for(int j=c.size()-1;j>=0;j--)c_pal+=c[j];
int cnt0=b.size()-i-1;
for(int j=0;j<cnt0;j++)c_pal+="0";
str.push_back(c_pal);
}
string ans="0";
for(string s:str)ans=hf_add(ans,s);
cout<<e<<ans;
return 0;
}
这里空空如也


有帮助,赞一个