高精度加减乘
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
string add(string a,string b) {
string ans;
int na[110],nb[110];
memset(na,0,sizeof(na));
memset(nb,0,sizeof(nb));
int la=a.size();
int lb=b.size();
for(int i=0; i<la; i++) {
na[la-1-i]=a[i]-'0';
}
for(int i=0; i<lb; i++) {
nb[lb-1-i]=b[i]-'0';
}
int lmax=max(la,lb);
for(int i=0; i<lmax; i++) {
na[i]+=nb[i];
na[i+1]+=na[i]/10;
na[i]%=10;
}
if(na[lmax]) lmax++;
for(int i=lmax-1; i>=0; i--) ans+=na[i]+'0';
return ans;
}
string Minus(string a,string b) {
string ans;
int na[110],nb[110];
memset(na,0,sizeof(na));
memset(nb,0,sizeof(nb));
int la=a.size(),lb=b.size();
for(int i=0; i<la; i++) {
na[la-1-i]=a[i]-'0';
}
for(int i=0; i<lb; i++) {
nb[lb-1-i]=b[i]-'0';
}
int lmax=max(la,lb);
for(int i=0; i<lmax; i++) {
na[i]-=nb[i];
if(na[i]<0) na[i]+=10,na[i+1]--;
}
while(!na[--lmax]&&lmax>0) ;
lmax++;
for(int i=lmax-1; i>=0; i--) ans+=na[i]+'0';
return ans;
}
int L=110;
string mul(string a,string b) {
string s;
int na[L],nb[L],nc[L],La=a.size(),Lb=b.size();
fill(na,na+L,0);
fill(nb,nb+L,0);
fill(nc,nc+L,0);
for(int i=La-1; i>=0; i--) na[La-i]=a[i]-'0';
for(int i=Lb-1; i>=0; i--) nb[Lb-i]=b[i]-'0';
for(int i=1; i<=La; i++)
for(int j=1; j<=Lb; j++)
nc[i+j-1]+=na[i]*nb[j];
for(int i=1; i<=La+Lb; i++)
nc[i+1]+=nc[i]/10,nc[i]%=10;
if(nc[La+Lb]) s+=nc[La+Lb]+'0';
for(int i=La+Lb-1; i>=1; i--)
s+=nc[i]+'0';
return s;
}
int main() {
string a,b;
cin>>a>>b;
cout<<"ADD "<<add(a,b)<<endl;
cout<<"MINUS "<<Minus(a,b)<<endl;
cout<<"MUL "<<mul(a,b)<<endl;
}