cpp实现大数相加,大数分别为string s1和string s1
时间: 2024-01-21 10:16:04 浏览: 64
可以使用字符串模拟加法的方法实现大数相加。具体步骤如下:
1. 将两个字符串s1和s2在前面补零,使它们长度相等。
2. 从低位到高位逐位相加,将结果存储在一个新的字符串中。
3. 处理进位问题,如果某一位相加结果超过了9,则需要进位。具体方法是将进位值加到下一位的运算中。
4. 将最终的结果字符串反转,去掉前导零,即可得到正确的结果。
以下是实现代码:
```cpp
string add(string s1, string s2) {
int len = max(s1.size(), s2.size()); // 求出最大长度
while (s1.size() < len) s1 = '0' + s1; // 在前面补零
while (s2.size() < len) s2 = '0' + s2;
string res;
int carry = 0; // 进位值
for (int i = len - 1; i >= 0; i--) { // 从低位到高位逐位相加
int sum = (s1[i] - '0') + (s2[i] - '0') + carry;
carry = sum / 10; // 处理进位
res.push_back(sum % 10 + '0'); // 将当前位的结果存入字符串中
}
if (carry) res.push_back(carry + '0'); // 如果最高位有进位,需要将进位值加上
reverse(res.begin(), res.end()); // 反转字符串
while (res.size() > 1 && res[0] == '0') res.erase(res.begin()); // 去掉前导零
return res;
}
```
这里使用了string类型来存储大数,可以处理任意长度的大数。
阅读全文