1
class Solution {
2
public:
3
long long kMirror(int k, int n) {
4
auto palin = [](int n, bool odd) {
5
long long ans = n;
6
if (odd) n /= 10;
7
for (; n; n /= 10) ans = 10 * ans + n % 10;
8
return ans;
9
};
10

11
auto is_mirror = [&](long long x) {
12
long long rev = 0;
13
for (auto tmp = x; tmp; tmp /= k) rev = k * rev + tmp % k;
14
return x == rev;
15
};
16

17
long long ans = 0, palin0 = 0, palin1 = 0;
18
int odd = 1, even = 1;
19
while (n--) {
20
for (; true; ++odd) {
21
palin1 = palin(odd, true);
22
if (is_mirror(palin1)) break;
23
}
24
for (; palin0 < palin1; ++even) {
25
palin0 = palin(even, false);
26
if (is_mirror(palin0)) break;
27
}
28
if (palin0 < palin1) {
29
ans += palin0;
30
++even;
31
} else {
32
ans += palin1;
33
++odd;
34
}
35
}
36
return ans;
37
}
38
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0