一、大数相加
string addBinary(string a, string b)
{
string s = "";
int c = 0, i = a.size() - 1, j = b.size() - 1;
while(i >= 0 || j >= 0 || c == 1)
{
c += i >= 0 ? a[i --] - '0' : 0;
c += j >= 0 ? b[j --] - '0' : 0;
s = char(c % 10 + '0') + s;
c /= 10;
}
return s;
}
二、大数相乘
string multiply(string num1, string num2) {
string sum(num1.size()+num2.size(),'0');
for(int i=num1.size()-1;i>=0;i--)
{
int carry = 0;
for(int j=num2.size()-1;j>=0;j--)
{
int temp=(sum[i+j+1]-'0')+(num1[i]-'0')*(num2[j]-'0')+carry;
sum[i+j+1] = temp%10+'0';
carry=temp/10;
}
sum[i]+=carry;
}
size_t startpos = sum.find_first_not_of("0");
if(startpos!=string::npos)
{
return sum.substr(startpos);
}
return "0";
}