c++ a + b 题规范题解
2026-09-19 19:41:15
发布于:浙江
5阅读
0回复
0点赞
由于这一道题实在是太难了,如果用常规方法会错误,所以要用高精度,代码如下:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 将较短的字符串高位补齐相同长度,同时将这个字符串转变为整数
void FIX(string& s, int length) {
reverse(s.begin(), s.end());
while (s.length() != length) {
s.push_back('0');
}
for (int i = 0; i < s.size(); i++) {
s[i] -= '0';
}
}
// 将高位 '0' 删除,最终反转
void RESULT(string& s) {
while (s.size() > 1 && s.back() == '0') s.pop_back();
reverse(s.begin(), s.end());
}
int main() {
string a, b;
cin >> a >> b;
int length = max(a.size(), b.size());
// 两个数字相加的结果,位数最多不超过 a, b 两数最长位数 + 1(进位所得)
string c(length + 1, 0);
// 字符串反转,方便相加进位,同时变为整数
FIX(a, length);
FIX(b, length);
for(int i = 0 ; i < a.size();i++){
c[i] += a[i] + b[i];
if(c[i] > 9){
c[i+1] += 1;
c[i] = c[i] % 10;
}
c[i] += '0';
if(i == a.size()-1) c[i+1] += '0';
}
RESULT(c);
cout << c;
return 0;
}
学费了吗?
这里空空如也






有帮助,赞一个