题目:输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
#include <bits/stdc++.h>
using namespace std;
/*
*申明一个bign的结构体,里面放int型数组
*从小到大分别放入个位,十位,百位……
*/
struct bign{
int d[100];
int len;
//构造函数,用来初始化,防止每次都忘记初始化
bign(){
memset(d,0,sizeof(d));
len=0;
}
};
//将字符串数组逆序转换成int型数组
bign change(char s[]){
bign a;
a.len=strlen(s);
for(int i=0;i<a.len;i++){
a.d[i]=s[a.len-1-i]-'0';
}
return a;
}
//大整数加法
bign add(bign a,bign b){
bign c;
int carry = 0; //进位
for(int i=0;i<a.len||i<b.len;i++){
int temp=a.d[i]+b.d[i]+carry; //同位相加,并加上进位,比如4,8,得到12
c.d[c.len++]=temp%10; //取个位数字2,放入新数组
carry=temp/10; //取进位数字1,留着下次加
}
if(carry!=0){
c.d[c.len++]=carry;
}
return c;
}
int main() {
char s1[100],s2[100];
cin>>s1>>s2;
bign a=change(s1);
bign b=change(s2);
bign c=add(a,b);
for(int i=c.len-1;i>=0;i--){
cout<<c.d[i];
}
return 0;
}