几个问题,求助dalao
查看原帖
几个问题,求助dalao
760382
paranoiaX楼主2023/10/18 23:47
#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];
		}
	}
	//================================================
	//让1234 12变成1234 0012 

	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;
}
  1. #3 #4 RE了,但是本地测试没问题
  2. 如果78行不加特判最后会输出乱码 求助dalao解决,救救这个可怜的高中oier吧
2023/10/18 23:47
加载中...