题目描述
今天老师在课堂上讲了加法,并布置了课堂作业,贪玩的达子没有好好听课,你能帮他完成今天的作业吗。
输入
有多组测试样例。 输入的第一行是一个整数T,代表测试样例的个数,T不大于1000。 每组测试样例给出两个整数a和b,以换行符分割,请你帮达子算出“a+b”的结果,其中0<=a, b<=10100。
输出
每组测试样例有一行输出,代表a+b的结果。
样例输入
2 5 6 386198 858797样例输出
11 1244995代码:
#include<bits/stdc++.h> using namespace std; int main(){ string s1,s2; int n,i,x,t,l1,l2; cin>>n; while(n--){ cin>>s1>>s2; l1=s1.length()-1; l2=s2.length()-1; string r; if(l1<l2){ for(i=1;i<=l2-l1;i++){ s1='0'+s1; } }else{ for(i=1;i<=l1-l2;i++){ s2='0'+s2; } } l1=s1.length(); t=0; for(i=l1-1;i>=0;i--){ x=s1[i]+s2[i]-'0'-'0'+t; t=x/10; x%=10; r=char(x+'0')+r; } if(t) r=char(t+'0')+r; cout<<r<<endl; } }总结:
1.为方便运算,可以先进行字符串长度的比较,将较短的字符串前缀用'0'补全
2.在进行计算时,可以吧进位的数单独记录下来,如代码中的变量t,在计算下一位时一起运算,如代码x=s1[i]+s2[i]-'0'-'0'+t;
3.注意应用字符强转类型如代码r=char(x+'0')+r;