描述
输入两个用字符串 str 表示的整数,求它们所表示的数之和。
数据范围: 1 \le len(str) \le 10000 \1≤len(str)≤10000
输入描述:
输入两个字符串。保证字符串只含有'0'~'9'字符
输出描述:
输出求和后的结果
示例1
输入:
9876543210 1234567890
复制输出:
11111111100
#include <iostream>
#include <vector>
#include <algorithm>
void integerAdd(std::string num1, std::string num2)
{
std::vector<int> vec;
int i = num1.length()-1;
int j = num2.length()-1;
while (i>=0 && j >=0)
{
int temp = (num1[i] - '0') + (num2[j] - '0');
vec.push_back(temp);
i--;
j--;
}
while(i >= 0)
{
int temp = num1[i] - '0';
vec.push_back(temp);
i--;
}
while(j >= 0)
{
int temp = num2[j] - '0';
vec.push_back(temp);
j--;
}
for(int i = 0; i < vec.size(); ++i)
{
if(vec[i] >= 10)
{
vec[i] = vec[i] - 10;
vec.resize(vec.size()+1);
vec[i+1] = vec[i+1]+1;
}
}
std::reverse(vec.begin(), vec.end());
std::string rtnStr;
for(int i = 0;i < vec.size(); ++i)
{
rtnStr += vec[i] + '0';
}
for(int i = 0; i < rtnStr.length(); ++i)
{
if(rtnStr[i]-'0' != 0)
{
rtnStr = rtnStr.substr(i, rtnStr.length()-i);
break;
}
}
std::cout << rtnStr << std::endl;
}
int main()
{
std::string num1;
std::string num2;
while(std::cin >> num1 >> num2)
{
integerAdd(num1, num2);
}
return 0;
}