一道基础大数加减问题,对两对字符串进行末位数加减,当然,末位数要进行数据类型转化,字符转化成数字,以此类推,注意进位即可。最后输出的时候再转化为对应的字符输出,数据位对10取模。需要注意的一点是,在前部分算完后再判断一下还有进位没有,其他就没啥需要注意的了。哦,对了,这道题对格式要求挺严格的,输出的时候需要特别注意一下。
AC算法如下:
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
string bigAdd(string num1,string num2){
string res;
if(num1.size()==0){
res=num2;
return res;
}
if(num2.size()==0){
res=num1;
return res;
}
res="";
int n1=num1.size()-1,n2=num2.size()-1;
int carry=0;
while(n1>=0||n2>=0){
int a=n1>=0?num1[n1--]-'0':0;
int b=n2>=0?num2[n2--]-'0':0;
int t=carry+a+b;
carry=t/10;
t=t%10;
res=to_string(t)+res;
}
while(carry){
int t=carry/10;
carry=carry%10;
res=to_string(carry)+res;
carry=t;
}
return res;
}
int main(){
int count;
cin>>count;
if(count>=1&&count<=20){
string a[22][2];
for(int i=0;i<count;i++){
cin>>a[i][0]>>a[i][1];
}
for(int i=0;i<count;i++){
cout<<"Case "<<i+1<<":"<<endl;
cout<<a[i][0]<<" + "<<a[i][1]<<" = "<<bigAdd(a[i][1],a[i][1])<<endl;
if(i+1!=count){
cout<<endl;
}
}
}
return 0;
}