📅  最后修改于: 2023-12-03 14:55:33.160000             🧑  作者: Mango
我们需要编写一个函数来查找包含数字k或可被k整除的第n个数字。
def find_nth_number(k: int, n: int) -> int:
pass
k
:int类型,表示需要查找的数字。n
:int类型,表示需要查找的数字的序号(从1开始)。我们来看几个例子:
assert find_nth_number(1, 1) == 1
assert find_nth_number(1, 2) == 10
assert find_nth_number(3, 3) == 3
assert find_nth_number(3, 4) == 6
assert find_nth_number(3, 5) == 9
我们可以采用暴力枚举来解决此问题:
def find_nth_number(k: int, n: int) -> int:
num = 0
cnt = 0
while cnt < n:
num += 1
if str(k) in str(num) or num % k == 0:
cnt += 1
return num
该算法的时间复杂度为O(n^2),其中n为查找的数字的序号。
该算法的空间复杂度为O(1)。
该算法的效率比较低,可以通过一些优化来提高效率,例如: