简单描述:给两个很大很大的非负整数,求它的和
我们用正常的加运算符,在数值肯定是超过了整型long long的数据范围,因此下面我们来用程序模拟加法
#include <bits/stdc++.h>
using namespace std;
int main(){
string a, b;
getline(cin, a);
getline(cin, b);
int res[10001];
int k = 0, len1 = a.length(), len2 = b.length();
int len = min(len1, len2);
if(len1 != len2){
if(len1 > len2){
for(int i = 0; i < abs(len2-len1); i++){
res[i] = (a[i] - '0');
}
for(int i = abs(len2-len1); i < len1; i++){
res[i] = (a[i] - '0') + (b[i - abs(len2-len1)] - '0');
}
k = len1;
}else{
for(int i = 0; i < abs(len2-len1); i++){
res[i] = (b[i] - '0');
}
for(int i = abs(len2-len1); i < len2; i++){
res[i] = (a[i - abs(len2-len1)] - '0') + (b[i] - '0');
}
k = len2;
}
}else{
for(int i = 0; i < len1; i++){
res[i] = (a[i] - '0') + (b[i] - '0');
}
k = len1;
len = 0;
}
if(res[0] >= 10) cout<<res[0]/10;
for(int i = k; i > len; i--){
if(res[i] >= 10){
res[i-1] += res[i]/10;
res[i] %= 10;
}
}
for(int i = 0; i < k; i++){
cout<<res[i];
}
return 0;
}
/*
输入:
11111111111111111111111111111111
985896848641681651551546
输出:
1111111110969107959752792762662657
*/