Re: [闲聊] LeetCode Weekly Contest 411

楼主: dont   2024-08-18 19:55:37
Q3
# 思路
0. 能塞9就塞暴
1. 基本的case
k=1,3,9 -> 全塞9 -> 99..9
k=2 -> 末位数偶数, 8 + 9..9 + 8
k=4 -> 末2位可以4整除, 88 + 99..9 + 88
k=5 -> 末位数0或5, 5 + 99..9 + 5
k=8 -> 末3位数可以8整除, 888 + 99..9 + 888
2. k=6, 7
回文
n=7, a1 a2 a3 a4 a3 a2 a1
n=6, a1 a2 a3 a3 a2 a1
要让数字最大化, 就改最中间的位数
k=6
末位数必须为偶数,
先塞 8 + 9999 + 8
再判断n决定中间位数要怎么改, n是偶数就改77, 奇数改8
e.g.
89898
897798
k=7
观察 9, 99, 999, 9999, 99999, 999999, ... % 7
可以发现余数有规律 2, 1, 5, 3, 4, 0, 2, ...
所以 n % 6 == 0时, 直接回传999999
其他就改中间的位数 让数字%7=0
大概是这样
不过我k=7时直接改中间两位数再int(''.join(s_list)) % 7判断
有测资会RuntimeError
改完就超时了 哭
看讨论有人直接改 sys.set_int_max_str_digits()
也太偷懒..
作者: DJYOMIYAHINA (通通打死)   2024-08-18 20:20:00
mod7完全没想法==

Links booklink

Contact Us: admin [ a t ] ucptt.com