目录
HDU1048——The Hardest Problem Ever
HDU1047——Integer Inquiry
题目描述
运行代码
#include <iostream>
#include <string>
#include<stdio.h>
using namespace std;
// 将字符串表示的数字相加
string add(const string& num1, const string& num2) {
string result;
int carry = 0;
int i = num1.size() - 1;
int j = num2.size() - 1;
while (i >= 0 || j >= 0 || carry) {
int digit1 = (i >= 0) ? (num1[i] - '0') : 0;
int digit2 = (j >= 0) ? (num2[j] - '0') : 0;
int sum = digit1 + digit2 + carry;
carry = sum / 10;
result += (sum % 10 + '0');
i--;
j--;
}
reverse(result.begin(), result.end());
return result;
}
int main() {
int n;
cin >> n;
while (n--) {
string num, sum = "0";
cin.ignore(); // 忽略换行符
while (getline(cin, num) && num != "0") {
sum = add(sum, num);
}
cout << sum << endl;
if (n) {
cout << endl; // 输出块之间的空行
}
}
return 0;
}
代码思路
-
add 函数:
add
函数接收两个字符串参数num1
和num2
,这两个字符串代表了两个大整数。- 函数首先初始化一个空字符串
result
用于存储相加后的结果。 - 然后,初始化进位变量
carry
为 0。 - 接下来,从两个字符串的末尾开始(即个位数开始),进