hdu1002
大数模拟题
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
string a,b;
for(int p =1;p<=n;p++){
string c="";
cin>>a>>b;
int bit =0;
int i=a.length()-1;
int j=b.length()-1;
//从后到前累加,bit作为进位符号
for(;i>=0&&j>=0;i--,j--){
if((a[i]-'0')+(b[j]-'0')+bit>9){
char num ='0'+(a[i]-'0')+(b[j]-'0')+bit-10;
bit = 1;
c=num+c;
}
else{
char num='0'+(a[i]-'0')+(b[j]-'0')+bit;
bit =0;
c=num+c;
}
}
i++;
j++;
//解决对齐后的最高位进位问题
//cout<<"test"<<i<<j<<endl;
if(j!=0){
c=b.substr(0,j)+c;
if(bit==1){
c[j-1]=c[j-1]+1;
bit = 0;
}
}
if(i!=0){
c=a.substr(0,i)+c;
if(bit==1){
c[i-1]=c[i-1]+1;
bit =0;
}
}
if(bit==1){
c="1"+c;
//cout<<c1<<endl;
}
cout<<"Case "<<p<<":"<<endl;
cout<<a<<" + "<<b<<" = "<<c<<endl;
if(p!=n){
cout<<endl;
}
}
return 0;
}