时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:6745
解决:2320
- 题目描述:
实现一个加法器,使其能够输出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
****************************************************************/