90求调
查看原帖
90求调
1435772
Leehy楼主2025/7/22 17:58
#include<bits/stdc++.h>
using namespace std;
#define int long long
long long n, ans, a[101], b[101], s[101], cnt, f[101], A, B;
void dfs(int x, int y, long long answer) {
	ans = max(ans, answer / 10);
	if (x == cnt + 1)return;
	if (A >= a[x]) {
		A -= a[x];
		dfs(x + 1, y + 1, (answer + a[x]) * 10 + f[y]);
		A += a[x];
	} else {
		int aa = A;
		A = 0;
		dfs(x + 1, y + 1, (answer + aa) * 10 + f[y]);
		A = aa;
	}
	if (B >= b[x]) {
		B -= b[x];
		dfs(x + 1, y + 1, (answer + a[x]) * 10 + f[y]);
		B += b[x];
	} else dfs(x + 1, y + 1, answer * 10 + f[y]);
}
signed main() {
//	freopen("bigger.in", "r", stdin);
//	freopen("bigger.out", "w", stdout);
	cin >> n >> A >> B;
	while (n) {
		s[++cnt] = n % 10;
		n /= 10;
	}
	for (int i = 1; i <= cnt; i++)f[i] = s[cnt - i + 1];
	for (int i = 1; i <= cnt; i++) {
		a[i] = 9 - f[i];
		b[i] = f[i] + 1;
	}
	dfs(0, 1, 0);
	cout << ans << endl;
	return 0;
}
2025/7/22 17:58
加载中...