2020-2021:teams:farmer_john:jjleo:educational_codeforces_round_90_rated_for_div._2_virtual_participation
A | B | C | D | E | F | G |
+ | + | + | + | + | O | O |
rank:411
A
B
C
D
E
题解:可以发现$f(x)$分成每$10$一组来看的话都是连续的数,因此如果$n$能表示成连续的数的和,那么利用等差数列求和公式就可以求出首项,令最后一位为$9-k$保证不进位,剩下的进行贪心使得位数最少即可保证合法且最小。如果$n$不能表示成连续的数的和,因为$0 \le k \le 9$,如果存在答案那么一定可以表示成两部分,这两部分都是连续的数的和,数据范围很小可以直接暴力枚举,然后再根据两部分的特点去判断是否可行,进而求出解。这个方法过于复杂,调了一万年。
其实只需要考虑进位这一过程,进位后会损失尾部的$a$个$9$,多了一个$1$,因此只要枚举尾部有几个$9$,个位的数字$x$,即可计算出对应的和,然后在分界处放置一个$8$,高位直接贪心使得位数最小即可,形如$y99\ldots998\underbrace{99\ldots99}_{a个9}x$。
F
G
2020-2021/teams/farmer_john/jjleo/educational_codeforces_round_90_rated_for_div._2_virtual_participation.txt · 最后更改: 2020/06/27 23:03 由 jjleo