B - “简单”的A+B

现给出两个非负整数A和B,求A+B

Input

第一行给出一个数字T (1<=T<=20),代表接下来有T组测试样例
接下来每一组测试样例由一行组成,一行内将给出两个整数A和B。
A和B的长度小于等于1000

Output

对于每一组测试样例,你应该输出两行。
第一行输出"Case #:"。#的意思是当前是第几个测试样例的数字。
第二行输出"A + B = SUM",A、B是原输入当中的数据,SUM是A+B运算结果,但是存在前导零的输出结果将不被认可
每两组测试样例之间留一个空行。

Sample Input

2
1 2
112233445566778899 998877665544332211

Sample Output

Case 1:
1 + 2 = 3

Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define ll long long
#define mes(x,y) memset(x,y,sizeof(x))
using namespace std;
int main(){
	int n;string x,y;vector<long>a,b,c;
	while(cin>>n){
		int k=1;
		while(n--){
			a.clear();b.clear();c.clear();x.clear();y.clear();
			cin>>x>>y;
			long len=max(x.length(),y.length()),v=0,i=0,j;
			for(i=x.size()-1;i>=0;i--)a.push_back((long)(x[i]-'0'));
			for(i=y.size()-1;i>=0;i--)b.push_back((long)(y[i]-'0'));
			for(i=0;i<len;i++){
				long tx=a[i],ty=b[i];
				if(i>=x.length()){
					tx=0;}
				if(i>=y.length()){
					ty=0;}
				v=tx+ty+v;
				c.push_back(v%10);
				v=v/10;}
			while(v!=0){
				c.push_back(v%10);
				len++;
				v/=10;}
			cout<<"Case "<<k++<<":"<<endl<<x<<" + "<<y<<" = ";
			for(j=len-1;j>=0;j--){
				cout<<c[j];
			}cout<<endl;
			if(n!=0)cout<<endl;
		}
	} 
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44417851/article/details/89059395
A+B