利用字符串模拟大数相加;
#include <stdio.h>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int T,j=0;
string a1, a2, a3, a4;
cin>>T;
while(j<T){
j++; // 只是为了保存a1的值 用以本题的输出格式
cin>>a1>>a2;
a3 = a1;
a4 = a2; // 同上
reverse(a1.begin(), a1.end()); // 反转 两个字符串 方便从头计算
reverse(a2.begin(), a2.end());
if(a1.length()>a2.length()) // 使两数长度相等
{
a2.append(a1.length()-a2.length(),'0');
}
else{
a1.append(a2.length()-a1.length(),'0');
}
for(int i = 0;i < a2.length(); i++){ // 将a2加在a1上 直到加完
if(a1[i]+a2[i]-'0'> '9'){
a1[i] += a2[i] -'0'-10; // 进位
if(i == a2.length()-1){
a1 += '1';
}
else
a1[i+1] += 1;
}
else
a1[i] += a2[i]-'0';
}
reverse(a1.begin(), a1.end());
if(j == 1) //控制输出格式
{
printf("Case %d:\n",j);
cout<<a3<<" + "<<a4<<" = "<<a1<<endl;
}
else
{
printf("\nCase %d:\n",j);
cout<<a3<<" + "<<a4<<" = "<<a1<<endl;
}
}
return 0;
}