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