#include <bits/stdc++.h>
using namespace std;
char a[100000], b[100000], ans[100000];
char numa[100000], numb[100000];
void dfs(int la, int lb, int s, int jin){
if(s == max(la, lb)){
if(jin == 1){
cout << 1;
}
return;
} else {
int na = (int)numa[max(la, lb) - s - 1] - 48, nb = (int)numb[max(la, lb) - s - 1] - 48;
if(na + nb + jin >= 10){
ans[s] = (char)(na + nb + jin - 10 + 48);
dfs(la, lb, s + 1, 1);
} else {
ans[s] = (char)(na + nb + jin + 48);
dfs(la, lb, s + 1, 0);
}
}
}
int main(){
int la = 0, lb = 0;
char ch;
while(true){
ch = getchar();
if(ch == '\n'){
break;
} else {
a[la] = ch;
la++;
}
}
while(true){
ch = getchar();
if(ch == '\n'){
break;
} else {
b[lb] = ch;
lb++;
}
}
if(la > lb){
for(int i = 0; i < la - lb; i++){
numb[i] = '0';
}
for(int i = la - lb; i < la; i++){
numb[i] = b[i - (la - lb)];
}
for(int i = 0; i < la; i++){
numa[i] = a[i];
}
} else {
for(int i = 0; i < lb - la; i++){
numa[i] = '0';
}
for(int i = lb - la; i < lb; i++){
numa[i] = a[i - (lb - la)];
}
for(int i = 0; i < lb; i++){
numb[i] = b[i];
}
}
dfs(la, lb, 0, 0);
for(int i = strlen(ans) - 1; i >= 0; i--){
if(48 <= (int)ans[i] && (int)ans[i] <= 57){
cout << ans[i];
}
}
cout << endl;
return 0;
}
- #3 #4 RE了,但是本地测试没问题
- 如果78行不加特判最后会输出乱码
求助dalao解决,救救这个可怜的高中oier吧