数组或字符串来模拟更多规模的数及共运算。现在输入两个整数,请输出它们的和。
输入说明
两行,每行一个整数,每个整数不超过1000位。
输出说明
一行,两个整数的和。
输入样例复
15464315464465465
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1005],b[1005],c[1005];//
int i,j,la,lb,r=0,x,y,k=0;//r表示进位i,j相当于两个指针,在数组内移动
//k=0表示进行加法运算后的数组指针,指向第一个元素,la表示数组长度,调用strlen函数,需要头文件cstring
cin>>a>>b;
la=strlen(a);
lb=strlen(b);
for(i=la-1,j=lb-1;i>=0 || j>=0 || r>0;i--,j--)
{
if(i>=0) x=a[i]-'0';//当i大于等于0时,i这个指针指向的数组还有元素可以加法运算,并把该元素代表的数值传给x
else x=0;//此时a数组中没有元素了,进行加法运算时把x当作0和另一个数组元素相加
if(j>=0) y=b[j]-'0';
else y=0;
int sum=x+y+r;//求此时a数组元素与b数组元素代表的数值加上进位和
r=sum/10;//求进位
c[k++]=sum%10+'0';//将该位上的数值转换为字符型,并传递给c数组
}
for(int s=k-1;s>=0;s--)
{
printf("%c",c[s]);
}
}
482321654151
输出样例
15464797786119616
数据范围提示
数据规模和约定:每个整数不超过1000位