A+B Problem(高精)

xiaoxiao2022-06-11  22

题目描述

今天老师在课堂上讲了加法,并布置了课堂作业,贪玩的达子没有好好听课,你能帮他完成今天的作业吗。 

 

输入

有多组测试样例。 输入的第一行是一个整数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;

转载请注明原文地址: https://www.6miu.com/read-4931342.html

最新回复(0)