Given N and K, output K-th Palindrome that has N digits.
Input: N = 2, K = 3
Output: [3, 3]
Explanation: [1,1] => [2,2] => [3, 3]
Input: N = 3, K = 5
Output: [1, 4, 1]
Explanation: [1, 0, 1] => [1, 1, 1] => [1, 2, 1] => [1, 3, 1] => [1, 4, 1]
Input: N = 5, K = 201
Output: [3, 0, 0, 0, 3]
Explanation: … => [2, 9, 8, 9, 2] => [2, 9, 9, 9, 2] => [3, 0, 0, 0, 3]
def func(n, k, ans): if n > 0: segment = 10 ** ((n - 1) // 2) element, next_k = divmod(k, segment) ans.append(element) func(n - 2, next_k, ans) def generate(n, k): ans = [] func(n, k - 1, ans) ans[0] += 1 if n % 2: return ans[:-1] + ans[::-1] else: return ans + ans[::-1] if __name__ == "__main__": result = generate(5, 201) print(result)