题目描述
读入两个数a和b,输出他们的和。
输入
第一行是a
第二行是b
输出
输出a+b的和
样例输入
1
1
样例输出
2
提示
0<=a,b<=10¹⁰⁰⁰⁰
a,b是整数
程序
#include<bits/stdc++.h>
using namespace std;
int main(){
char a[10010];
char b[10010];//两个大数,用char数组输入,注意数据范围
int x[10010]={0};//保存数a的int数组
int y[10010]={0};//保存数b的int数组
int s[10010]={0};//保存数a+b的int数组
cin.getline(a,10010);
cin.getline(b,10010);//字符数组直接输入方法
int str_a = strlen(a);
int str_b = strlen(b);
for(int i=0;i<str_a;i++)
x[str_a-1-i]=a[i]-48;//数字字符转数字,同时倒序数组,简化算法,特别注意str_a-1-i的含义
for(int i=0;i<str_b;i++)
y[str_b-1-i]=b[i]-48;//同上
int m=0;//保存结果
int str_max=max(str_a,str_b);
for(int i=0;i<str_max;i++)
{
m=x[i]+y[i]+s[i];
s[i]=m%10;
s[i+1]=m/10;//因为结果(m)可能会超过10,所以涉及到了进位
}
int j=str_max+1;
while(s[j]==0)
j--;
while(j>=0)
{
cout<<s[j];
j--;
}//将倒序的数组倒序输出,即正序输出
return 0;
}
/*
步骤1:建立数组存放(4~8行)
步骤2:输入取值可能有成千上万位的数(9~12行)
步骤3:char数组转int数组,同时逆序存放(13~16行)
步骤4:计算结果(17~24行)
步骤5:输出结果(25~32行)
*/