您的位置:首页 > 其它

大整数乘法

2013-11-12 15:01 232 查看
问题描述

求两个不超过200位的非负整数的和。

输入数据

有两行,每行是一个不超过200位的非负整数,没有多余的前导0。

输出要求

一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能

输出为0342。

输入样例

22222222222222222222

33333333333333333333

输出样例

Output Sample:

55555555555555555555

# include<stdio.h>
# include<string.h>

int Max(int a, int b){
return (a > b ? a : b);
}
int main(){
char a[201]={'\0'},b[201]={'\0'}, c[202]={'\0'}, carry_bit = '0';
int n, aLen, bLen, cStart = 200;
scanf("%s%s", a, b);
aLen = strlen(a);
bLen = strlen(b);
n = Max(aLen, bLen);
while(aLen > 0 || bLen > 0){
if(aLen <= 0)
a[aLen-1] = '0';
if(bLen <= 0)
b[bLen-1] = '0';
c[cStart] = a[aLen-1] + b[bLen-1]-'0' + carry_bit - '0';
if(c[cStart] > '9'){
carry_bit = '1';
c[cStart] = c[cStart] -10;
}
else
carry_bit = '0';

cStart--; aLen--; bLen--;
}
if(carry_bit != '0')
c[cStart] = '1';
else
cStart++;
while(c[cStart] != '\0'){
printf("%c", c[cStart]);
cStart++;
}
return 0;

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: