题解 | #高精度整数加法#
高精度整数加法
https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
string str1,str2;
cin >> str1 >> str2;
string ans; //定义求和结果
vector<char> st1;
vector<char> st2;
for (auto it : str1)
{
st1.push_back(it);
}
for (auto it : str2)
{
st2.push_back(it);
}
int flag = 0; //进位标志位
while(st1.size() != 0 || st2.size() != 0)
{
int temp = 0; //暂时保存加和数据
if (st1.size() != 0)
{
char lastElement1 = st1.back(); //去除最后一个数
temp += lastElement1 - '0';
st1.pop_back(); //删除最后一个数
}
if (st2.size() != 0)
{
char lastElement2 = st2.back();
temp += lastElement2 - '0';
st2.pop_back();
}
//确定每一位的最后一个数
ans += ((temp + flag) % 10) + '0';
//确定进位
flag = (temp + flag) / 10;
if (flag == 1 && st1.size() == 0 && st2.size() == 0)
{
ans += '1';
}
}
reverse(ans.begin(),ans.end());
cout << ans;
}
// 64 位输出请用 printf("%lld")
拼多多集团-PDD公司福利 817人发布