1
class Solution:
2
def kMirror(self, k: int, n: int) -> int:
3

4
def numberToBase(n, b):
5
if n == 0:
6
return [0]
7
digits = []
8
while n:
9
digits.append(n % b)
10
n //= b
11
return digits[::-1]
12

13
# not used
14
def baseToNumber(arr, b):
15
ans = 0
16
for x in arr:
17
ans = ans * b + int(x)
18
return ans
19

20
def is_mirror(s):
21
l, r = 0, len(s) - 1
22
while l <= r:
23
if s[l] != s[r]:
24
return False
25
l += 1
26
r -= 1
27
return True
28

29
def gen():
30
"""
31
generate for value with different length
32
when i == 0: num:[1, 10)
33
size of num: 1, 2 -> 1 or 11
34
when i == 1: [10, 100)
35
size of num: 3, 4 -> 10 or 101
36
when i == 2: [100, 1000)
37
size of num: 5, 6 -> 10001 or 100001
38

39
the num will be increasing
40
"""
41
for i in range(30):
42
for num in range(10**i, 10 ** (i + 1)):
43
s = str(num) + str(num)[::-1][1:]
44
yield int(s)
45
for num in range(10**i, 10 ** (i + 1)):
46
s = str(num) + str(num)[::-1]
47
yield int(s)
48

49
ans = 0
50
left = n
51
for num in gen():
52
base = numberToBase(num, k)
53
# if is_mirror(base):
54
if base == base[::-1]:
55
ans += num
56
left -= 1
57
if left == 0:
58
break
59

60
return ans

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0