-
题目描述:
-
实现一个加法器,使其能够输出a+b的值。
-
输入:
-
输入包括两个数a和b,其中a和b的位数不超过1000位。
-
输出:
-
可能有多组测试数据,对于每组数据,
输出a+b的值。
-
样例输入:
-
2 6 10000000000000000000 10000000000000000000000000000000
-
样例输出:
-
8 10000000000010000000000000000000
思路:
大数加法,前缀补全0更容易计算。没必要一定转成字符串,也可转成数组。或者直接用字符计算,不转换成数字。
代码:
#include <stdio.h>
#include <string.h>
#define N 1000
int main(void)
{
int i, k;
char s[N+1];
int a[N+1], b[N+1];
while (scanf("%s", s) != EOF)
{
k=0;
for (i=strlen(s)-1; i>=0; i--, k++)
a[k] = s[i]-48;
for (; k<N+1; k++)
a[k] = 0;
scanf("%s", s);
k=0;
for (i=strlen(s)-1; i>=0; i--, k++)
b[k] = s[i]-48;
for (; k<N+1; k++)
b[k] = 0;
for (i=0; i<N+1; i++)
{
a[i] += b[i];
if (a[i] >= 10)
{
a[i+1] ++;
a[i] %= 10;
}
}
for (i=N; i>=0; i--)
{
if (a[i] != 0)
break;
}
if (i<0)
printf("0");
for (; i>=0; i--)
printf("%d", a[i]);
printf("\n");
}
return 0;
}
/**************************************************************
Problem: 1198
User: liangrx06
Language: C
Result: Accepted
Time:130 ms
Memory:912 kb
****************************************************************/