首页 > 学院 > 开发设计 > 正文

1.6 10大整数加法

2019-11-06 07:18:23
字体:
来源:转载
供稿:网友
描述

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

输入有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。输出一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样例输入
2222222222222222222233333333333333333333样例输出
55555555555555555555
#include<iostream>#include<cstdio>#include<cmath>#include<string>#include<algorithm>using namespace std;const int maxn=10005;int a[maxn],b[maxn],c[maxn],ans[maxn],lena,lenb,lenans;void read(int *a,int &len){	string cur;	cin>>cur;	len=cur.length();	for(int i=0;i<len;i++) a[i]=cur[i]-48;	reverse(a,a+len);}int main(){	read(a,lena);	read(b,lenb);	lenans=max(lena,lenb);	for(int i=0;i<=lenans;i++)	{		ans[i]=a[i]+b[i]+c[i];		if(ans[i]>9) 		{		    c[i+1]=ans[i]/10;		    ans[i]=ans[i]%10;		}	}	while(ans[lenans]>0) lenans++;	bool first=true;	for(int i=lenans-1;i>=0;i--) 	{		if(first==true&&ans[i]>0)			first=false;		if(first==false) cout<<ans[i];	}	if(first==true) cout<<0;	return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表