问题描述
给定一个正整数 N 。你可以对 N 的任意一位数字执行任意次以下 2 种操 作
1.将该位数字加1,如果该位数字已经是9,加1之后变成 0。
2.将该位数字减1,如果该位数字已经是 0,减 1之后变成 9。
你现在总共可以执行1号操作不超过 A次,2号操作不超过 B 次。 请问你最大可以将N变成多少?
输入格式
第一行包含 3个整数: N,A,B。
输出格式
一个整数,表示操作后的最大数字
输入示例
123 1 2
输出示例
933
说明:对百位数字执行 2 次2号操作,对十位数字执行1次1号操作。
n,A,B = map(int,input().split())
str_num = list(map(int,list(str(n))))
max_num = 0
def f(i,cur_num,A,B):
global max_num
if i <len(str_num):
x = str_num[i]
#选A
t = min(A,9-x) #选A的使用次数
f(i+1,cur_num*10+x+t,A-t,B)
#选B
if B >= x+1:
f(i+1,cur_num*10+9,A,B-x-1)
else:
max_num = max(max_num,cur_num)
f(0,0,A,B)
print(max_num)