计算高精度加法
Description
由键盘输入两个位数很长的整数(一行一个,最多不超过80位),试计算并输出这两个数的和。
输入样例
1234567890123456789353534532453453453434534
987654321098765324534534534534532
输出样例
1234567891111111110452299856987987987969066
提示
注意,一个普通的变量不能保存十多位长的整数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 81
int main()
{
char s[N];
int a[N]={0}, b[N]={0}, result[N]={0};
int i, aLen, bLen, longer, resultLen, temp;
gets(s); aLen = strlen(s); for(i=0;i<aLen;i++) a[i] = s[aLen-1-i]-'0';
gets(s); bLen = strlen(s); for(i=0;i<bLen;i++) b[i] = s[bLen-1-i]-'0';
longer = (aLen>bLen ? aLen : bLen);
for(i=0;i<longer;i++){
result[i] += (a[i] + b[i]) % 10;
result[i+1] += (a[i] + b[i]) / 10;
}
resultLen = result[longer]==0 ? longer : longer+1;
for(i=0;i<resultLen/2;i++){
temp = result[i]; result[i] = result[resultLen-1-i]; result[resultLen-1-i] = temp;
}
for(i=0;i<resultLen;i++) printf("%d", result[i]);
return 0;
}