您的位置:首页 > 其它

HDU 1002 A + B Problem II 大整数加法

2018-03-28 20:19 393 查看

题目:

http://acm.hdu.edu.cn/showproblem.php?pid=1002

题意:

每次给出两个不超过1000位打整数,求和

思路:

模拟大整数加法。先倒置两个数组对齐,然后模拟加法就好了

代码:

#include <bits/stdc++.h>

using namespace std;

const int N = 1000 + 10;
//num1,num2储存加数,sum储存其和
void add(char *num1, char *num2, char *sum)
{
int len1 = strlen(num1), len2 = strlen(num2);
reverse(num1, num1 + len1);
reverse(num2, num2 + len2);
int len = 0;
int carry = 0;
for(int i = 0; i < len1 || i < len2; ++i)
{
carry += i < len1 ? num1[i]-'0' : 0;
carry += i < len2 ? num2[i]-'0' : 0;
sum[len++] = carry%10 + '0';
carry /= 10;
}
if(carry) sum[len++] = carry + '0';
sum[len] = '\0';
reverse(num1, num1 + len1);
reverse(num2, num2 + len2);
reverse(sum, sum + len);
}
int main()
{
char num1
, num2
, sum
;
int t, cas = 0;
scanf("%d", &t);
while(t--)
{
scanf("%s%s", num1, num2);
add(num1, num2, sum);
printf("Case %d:\n", ++cas);
printf("%s + %s = %s\n", num1, num2, sum);
if(t) puts("");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: