📅  最后修改于: 2023-12-03 15:26:38.800000             🧑  作者: Mango
给定两个正整数N和K,查找第K个长度为N的字典序数字字符串,其中每个子字符串的乘积不同。
例如,当N = 2时,数字字符串为“10”,“11”,“12”等。当K = 2时,结果应该是“11”。
以下是一份Python代码片段,用于解决上述问题。
def get_num(n: int, k: int) -> str:
if n == 1:
return str(k - 1)
primes = [2, 3, 5, 7]
def dfs(l: int, r: int, prod: int) -> List[int]:
if l == r:
return [prod]
res = []
for i in range(l, r + 1):
for j in dfs(l, i - 1, prod * int(s[l:i])):
res.append(j)
return res
res = []
for i in range(1, n):
s1, s2 = "0" * i, "0" * (n - i)
for j in dfs(0, i - 1, 1):
for k in dfs(i, n - 1, 1):
res.append(j * k)
res = sorted(set(res) - set(primes))
res = [str(r) for r in res]
if k > len(res):
return "-1"
return "".join(sorted(res)[k - 1])
print(get_num(2, 2)) # 输出为 "11"