#include<iostream>
#include<string>
using namespace std;string sum(string &s1, string &s2) {
if (s1 == ""&&s2 == "")
return "0";
if (s1 == "")
return s2;
if (s2 == "")
return s1;
string max, min;
if (s1.length() > s2.length()) {
max = s1;
min = s2;
}
else {
max = s2;
min = s1;
}
int i, j;
int maxlen = max.length();
int minlen = min.length();
for(i = maxlen - 1, j = minlen - 1; j >= 0; j--, i--) {
max[i] = max[i] + min[j] - '0'; //min[j]-'0'相当于对max数字进行移动
}
for (i = maxlen - 1; i > 0; i--) {
if (max[i] > '9') {
max[i] -= 10;
max[i - 1] += 1;
}
}
if (max[0] > '9') {
max[0] = max[0] - 10;
max = '1' + max; //相当于拼接,前加就前接,后接就后加
}
return max;
}int main() {
int num, i = 1;
cin >> num;
int ss = num;
while (num--) {
string num1,num2;
cin >> num1 >> num2;
cout << "Case " << i<< ":" << endl;
cout << num1 <<" + "<< num2 << " = " << sum(num1, num2) << endl;
if( i<ss )
cout << endl;
i++;
}
return 0;
}
hduoj100
最新推荐文章于 2020-06-12 12:14:48 发布
本文介绍了一种使用C++实现的字符串大数相加算法,该算法首先判断两个输入字符串是否为空,然后确定较长的字符串作为基准进行位运算。通过遍历字符串,将较短字符串的数字加到较长字符串对应位置上,处理进位,并在必要时添加最高位的进位。此算法适用于处理超过常规整型变量范围的大数相加操作。
600

被折叠的 条评论
为什么被折叠?



