题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string sumstr(string str1, string str2)
{
int pro = 0;
string sum;
string dic = "0123456789";
reverse(str1.begin(), str1.end());
reverse(str2.begin(), str2.end());
str2.append(1,'0');
str1.append(str2.size()-str1.size(), '0');
for (int i = 0; i < str1.size(); ++i)
{
if (((str1[i]-'0')+(str2[i]-'0')+pro) > 9)
{
sum += dic[((str1[i]-'0')+(str2[i]-'0')+pro) % 10];
pro = 1;
}
else
{
sum += dic[((str1[i]-'0')+(str2[i]-'0')+pro) % 10];
pro = 0;
}
}
reverse(sum.begin(), sum.end());
if (sum[0] == '0')
{
return sum.substr(1);
}
else
{
return sum;
}
}
int main()
{
string str1, str2;
cin >> str1 >> str2;
if (str1.size() == 0)
{
cout << str2;
}
else if (str2.size() == 0)
{
cout << str1;
}
else if (str1.size() < str2.size())
{
cout << sumstr(str1, str2);
}
else
{
cout << sumstr(str2, str1);
}
return 0;
}
取余前面少个括号排查了好久,表达式还是要多加括号
