大数加法和比较C++代码
#include <iostream>
#include <cstring>
using namespace std;
string largeadd(string s1,string s2){
int size1=s1.size(),size2=s2.size();
bool flag=size1>size2;
int anssize=max(size1,size2)+1,i;
char sum[anssize]={0}; sum[0]='0';
for(i=1;i<=min(size1,size2);i++){
sum[anssize-i]+=s1[size1-i]+s2[size2-i]-'0';
if(sum[anssize-i]>'9'){
sum[anssize-i]-=10;
sum[anssize-i-1]++;
}
}
if(flag)
for(;i<anssize;i++){
sum[anssize-i]+=s1[size1-i];
if(sum[anssize-i]>'9'){
sum[anssize-i]-=10;
sum[anssize-i-1]++;
}
}
else
for(;i<anssize;i++){
sum[anssize-i]+=s2[size2-i];
if(sum[anssize-i]>'9'){
sum[anssize-i]-=10;
sum[anssize-i-1]++;
}
}
if(sum[0]=='1'){
sum[anssize]='\0';
return sum;
}
else{
char ans[anssize-1];
for(int i=1;i<anssize;i++)
ans[i-1]=sum[i];
ans[anssize-1]='\0';
return ans;
}
}
bool largecomp(string s1,string s2){
if(s1.size()<s2.size()) return 1;
if(s1.size()>s2.size()) return 0;
return s1<s2;
}