大整数A+B
输入两个整数A、B,求 A + B。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入2个正整数A、B。整数可能很大,但每个整数的位数不会超过1000。
输出格式:
对于每组测试输出两行数据;第一行输出"Case #:",#表示测试组号,第二行输出形式为“A + B = Sum”,Sum表示A+B的结果。每两组测试数据之间空一行。
输入样例:
2
1 2
88888888888888888888888 11111111111111111111111
输出样例:
Case 1:
1 + 2 = 3
Case 2:
88888888888888888888888 + 11111111111111111111111 = 99999999999999999999999
解题代码:#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false); // 提升输入输出效率(适配1000位大数)
cin.tie(nullptr);
int T;
cin >> T;
cin.ignore(); // 替代getchar(),更直观的换行符吸收方式
for(int case_num = 1; case_num <= T; case_num++) // 变量名更语义化
{
string A, B;
cin>>A>>B;
reverse(A.begin(), A.end());
reverse(B.begin(), B.end());
int carry = 0; // 英文命名更通用,替代jinwei
int idx = 0; // 替代cur,index缩写更语义化
vector
while(idx < A.size() || idx < B.size() || carry)
{
int digitA = (idx < A.size()) ? (A[idx] - '0') : 0;
int digitB = (idx < B.size()) ? (B[idx] - '0') : 0;
int sum = digitA + digitB + carry;
result.push_back(sum % 10);
carry = sum / 10;
idx++;
}
reverse(A.begin(), A.end());
reverse(B.begin(), B.end());
cout << "Case " << case_num << ":" << endl;
cout << A << " + " << B << " = ";
for(int j = result.size() - 1; j >= 0; j--)
{
cout << result[j];
}
if(case_num != T)
{
cout << endl << endl;
}
else
{
cout << endl;
}
}
return 0;
}
浙公网安备 33010602011771号