普通版:整数大数相加
string addString(string x, string y)
{
int i = x.size() - 1;
int j = y.size() - 1;
string str = "";
long long s = 0; // 进位
while (i >= 0 || j >= 0 || s != 0)
{
// 判断是否被加完
if (i >= 0)
s += (x[i--] - '0');
if (j >= 0)
s += (y[j--] - '0');
str += char(s % 10 + '0');
// 重新回到进位的作用
s /= index;
}
reverse(str.begin(), str.end());
return str;
}
NB强化版:任意进制大数相加
string addString(string x, string y, int index)
{
int i = x.size() - 1;
int j = y.size() - 1;
string str = "";
long long s = 0;
while (i >= 0 || j >= 0 || s != 0)
{
if (i >= 0)
{
if (isdigit(x[i]))
s += (x[i--] - '0');
else
s += (x[i--] - 'a' + 10);
}
if (j >= 0)
{
if (isdigit(y[j]))
s += (y[j--] - '0');
else
s += (y[j--] - 'a' + 10);
}
int r = s % index;
if (r < 10)
str += char(r + '0');
else if(r >= 10)
str += char(r - 10 + 'a');
s /= index;
}
reverse(str.begin(), str.end());
return str;
}