HDU-1002 A + B Problem II

水题 HDU-1002 A + B Problem II

题目链接:杭电1002
在这里插入图片描述
题目大意:…long long 溢出的a+b

解题思路:输入进字符串然后转到int数组计算 (最开始用的三个字符串麻烦死了) 注意高位是否会进位 注意输出的换行 提交两次格式错误坑死了

代码块:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>

using namespace std;

int main() {
	int num1[1005] = { 0 }, num2[1005] = { 0 }, sum[1005] = { 0 };
	char str1[1005] = { '\0' }, str2[1005] = { '\0' };
	int t;
	cin >> t;
	for (int k = 1; k <= t; k++) {
		cin >> str1 >> str2;
		int len1 = strlen(str1);
		int len2 = strlen(str2);
		int maxx = max(len1, len2);
		int minn = min(len1, len2);
		//大数反向保留进arr
		for (int i = 0; i < len1; i++) {
			num1[i] = str1[len1 - 1 - i] - '0';
		}
		for (int i = 0; i < len2; i++) {
			num2[i] = str2[len2 - 1 - i] - '0';
		}
		for (int i = 0; i < maxx; i++) {
			sum[i] = num1[i] + num2[i] + sum[i];
			if (sum[i] >= 10) {
				sum[i + 1] = 1;
				sum[i] = sum[i] % 10; 
			}
		}
		printf("Case %d:\n", k);
		printf("%s + %s = ",str1,str2);
		if (sum[maxx] == 1) {
			cout << "1";
		}//最后一位是否有进位
		for (int i = maxx - 1; i >= 0; i--) {
			cout << sum[i];
		}
		//最后一个样例后面就一个换行
		if (k != t) {
			cout << endl << endl;
		}
		else {
			cout << endl;
		}
		memset(num1, 0, sizeof(num1));
		memset(num2, 0, sizeof(num2));
		memset(sum, 0, sizeof(sum));
		memset(str1, 0, sizeof(str1));
		memset(str2, 0, sizeof(str2));
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值