1. 高精度加法
string add(string a1,string b1){
string c1;
int lena=a1.size(),lenb=b1.size(),lenc=1,aa[5005]={},bb[5005]={},cc[5005]={};
for(int i=0;i<lena;i++)aa[lena-i]=a1[i]-'0';
for(int i=0;i<lenb;i++)bb[lenb-i]=b1[i]-'0';
while(lenc<=lenb||lenc<=lena){
cc[lenc]+=bb[lenc]+aa[lenc];
cc[lenc+1]=cc[lenc]/10;
cc[lenc]%=10;
lenc++;
}
if(!cc[lenc])lenc--;
while(lenc>=1)c1+=cc[lenc--]+'0';
return c1;
} 2. 高精度减法
string sub(string a1,string b1){
string c1;
int lena=a1.size(),lenb=b1.size(),lenc=1,aa[5005]={},bb[5005]={},cc[5005]={};
for(int i=0;i<lena;i++)aa[lena-i]=a1[i]-'0';
for(int i=0;i<lenb;i++)bb[lenb-i]=b1[i]-'0';
while(lenc<=lena||lenc<=lenb){
cc[lenc]+=aa[lenc]-bb[lenc];
if(cc[lenc]<0)cc[lenc]+=10,cc[lenc+1]--;
lenc++;
}
while(!cc[lenc]&&lenc>1)lenc--;
while(lenc>=1)c1+=cc[lenc--]+'0';
return c1;
}
3. 高精度乘法
string mul(string a1,string b1){
string c1;
int lena=a1.size(),lenb=b1.size(),lenc=lena+lenb,aa[5005]={},bb[5005]={},cc[10005]={};
for(int i=0;i<lena;i++)aa[lena-i]=a1[i]-'0';
for(int i=0;i<lenb;i++)bb[lenb-i]=b1[i]-'0';
for(int i=1;i<=lena;i++){
for(int j=1;j<=lenb;j++){
cc[i+j-1]+=aa[i]*bb[j];
cc[i+j]+=cc[i+j-1]/10;
cc[i+j-1]%=10;
}
}
while(!cc[lenc]&&lenc>1)lenc--;
while(lenc>=1)c1+=cc[lenc--]+'0';
return c1;
}