题目传送门:E. Sum of Digits
题目大意
f[x] 为x十进制表示的数码和,给定n, k找到最小的x使得f[x] + f[x + 1] + ... + f[x + k] = n
思路
本题做法有很多,比如本题n和k都很小,我们可以打表
这里我讲我过的方法(后面可能会补上一些其他方法),贪心 + 构造
贪心的要点在于:进位只需进到十位,如果有更高位的进位,如9999 -> 10000,数码和为37,那么一定存在更优的x比9999小,比如198 -> 199
构造的要点在于:对于某个个位,如果需要进位,就构造成x9...98y的形式,如果不用进位就构造成x9...9y的形式,当然中间的9和8可以省略的,比如n比较小,答案可能就是xy的形式(x可以为0)
因为我们希望找到最小的x,所以尽可能多的使用9使得位数尽可能少,并且使最高位尽可能小(这是显然的)
用上述方法,我们只要对于x的每个个位构造一个答案,