LC 2081 [H] Sum of k Mirror Numbers
Code with Senpai edited this page Mar 31, 2022
·
1 revision
focus on base 2
class Solution:
def kMirror(self, k: int, n: int) -> int:
def nextpalindrome(x):
"""Return next k-symmetric number."""
n = len(x)//2
for i in range(n, len(x)):
if int(x[i])+1 < k:
x[i] = x[~i] = str(int(x[i])+1)
for j in range(n, i):
x[j] = x[~j] = '0'
return x
return ["1"] + ["0"]*(len(x)-1) + ["1"]
x = ["0"]
ans = 0
for _ in range(n):
while True:
x = nextpalindrome(x)
val = int("".join(x), k)
# print(f'x={x} val={val} str(val)[::-1]={str(val)[::-1]} str(val)={str(val)}')
if str(val)[::-1] == str(val): break # k smallest numbers
ans += val
return ans
footer