#include <bits/stdc++.h>
using namespace std;
int a, b;
string ans, n;
void dfs(int i, int c, int d, string s){
if(i == n.size()){
if(s > ans) ans = s;
return ;
}
int x = s[i] - '0';
if(x + 10 - 9 + d <= b && 9 - x + c <= a){
s[i] = '9';
dfs(i + 1, c, x + 10 - 9 + d, s);
dfs(i + 1, 9 - x + c, d, s);
}
else if(x + 10 - 9 + d <= b){
s[i] = '9';
dfs(i + 1, c, x + 10 - 9 + d, s);
}
else if(9 - x + c <= a){
s[i] = '9';
dfs(i + 1, 9 - x + c, d, s);
}
else{
s[i] += a - c;
dfs(i + 1, a, d, s);
}
}
signed main(){
ios_base::sync_with_stdio(false);
cout.tie(0), cin.tie(0);
cin >> n >> a >> b;
ans = n;
dfs(0, 0, 0, n);
cout << ans;
return 0;
}
只需用来一波贪心就行,都不需要数位dp。