1168:大整数加法

1168:大整数加法

【题目描述】
求两个不超过200位的非负整数的和。

【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。

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

【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555

解题代码:
#include
#include
#include
using namespace std;
//1、接收数据 两个加数
char c1[200];
char c2[200];
//用于存放char类型数组转换后的数据
int a[200],b[200],c[200];
int lena,lenb;
int main(){
gets(c1);//获取整行的输入内容,读入的内容从下标0开始存储
gets(c2);
lena=strlen(c1);
lenb=strlen(c2);
//字符数组的高位存到int类型数组的低位
for(int i=0;i<=lena-1;i++){
a[lena-1-i]=c1[i]-48;
}
for(int i=0;i<=lenb-1;i++){
b[lenb-1-i]=c2[i]-48;
}
int x=0;//表示进位值
int lenc=0;
while(lenc<=lena || lenc<=lenb){
//逐位相加
c[lenc] =a[lenc]+b[lenc]+x;
x=c[lenc]/10;
c[lenc]=c[lenc]%10;
lenc++;
}
while(c[lenc-1]==0){
lenc–;
}
for(int i=0;i<lenc;i++){
cout<<c[lenc-1-i];
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值