HDU 1002

半夜划水=_=

//HDU-1002.cpp
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <climits>
#include <cctype>
#include <algorithm>
#include <iostream>
#include <string>
#include <stack>
#include <map>
#include <set>
#include <queue>
#include <utility>
#include <vector>
#include <bitset>
#include <functional>
using namespace std;
//const double pai = acos(-1.0);
const double pai = 3.14159265358979323846;
const int INF = 0x3f3f3f3f;
typedef long long love_live;
char arr1[1117], arr2[1117], tmpr[1117];
int narr1[1117], narr2[1117];

void init(){
	memset(arr1, 0, sizeof(arr1));
	memset(arr2, 0, sizeof(arr2));
	memset(tmpr, 0, sizeof(tmpr));
	memset(narr1, 0, sizeof(narr1));
	memset(narr2, 0, sizeof(narr2));
	return ;
}

int main(int argc, char const *argv[]) {
#ifndef ONLINE_JUDGE
//	freopen("output", "w", stdout);
	freopen("input", "r", stdin);
#endif
	int n, m, i, j, k, cse, flag;
	while(scanf("%d", &n) != EOF){
		cse = 1;
		while(n--){
			if(cse != 1){
				printf("\n");
			}
			flag = 0;
			init();
			scanf("%s%*c%s", arr1, arr2);
			// cout << arr1 << endl;
			// cout << arr2 << endl;
			int len1 = strlen(arr1), len2 = strlen(arr2);
			if(len1 < len2){
				len1 ^= len2;
				len2 ^= len1;
				len1 ^= len2;
				strcpy(tmpr, arr1);
				strcpy(arr1, arr2);
				strcpy(arr2, tmpr);
				flag = 1;
			}
			for(i = 0; i < len1; ++i){
				narr1[len1 - i - 1] = arr1[i] - '0';
			}
			for(i = 0; i < len2; ++i){
				narr2[len2 - i - 1] = arr2[i] - '0';
			}
			// for(i = 0; i < len1; ++i){
			// 	cout << narr1[i];
			// }
			// cout << endl;
			// for(i = 0; i < len2; ++i){
			// 	cout << narr2[i];
			// }
			// cout << endl;
			for(i = 0; i < len2; ++i){
				narr1[i] += narr2[i];
			}
			int d = 0;
			for(i = 0; i < len1; ++i){
				d = narr1[i] / 10;
				narr1[i] %= 10;
				narr1[i + 1] += d;
			}
			if(narr1[len1] > 0){
				j = len1;
			}
			else{
				j = len1 - 1;
			}
			printf("Case %d:\n", cse++);
			if(flag == 1){
				printf("%s + %s = ", arr2, arr1);
			}
			else{
				printf("%s + %s = ", arr1, arr2);
			}
			for(i = j; i >= 0; --i){
				printf("%d", narr1[i]);
			}
			printf("\n");
		}
	}
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值