📅  最后修改于: 2023-12-03 15:26:27.763000             🧑  作者: Mango
这个问题可以转换成,找到n的最小倍数x,使得x的数字组成包含1-9,没有重复数字。因为假如包含了重复数字,那么必定会有至少一个数字没有被包含,不符合要求。
那么我们可以从1开始,一直乘到符合要求为止。
def find_x(n):
digits = set()
i = 0
while len(digits) < 9:
i += 1
x = n * i
digits |= set(str(x))
return i
# 测试
print(find_x(1)) # 9
print(find_x(9)) # 5
print(find_x(16)) # 6
在这个函数中,我们使用了一个set,用于存储出现的数字,其中 |=
操作符表示将两个set合并之后去重。
这个函数的时间复杂度是O(x),在实际情况下,10倍以内的最小倍数可能稍微大一点,但一般来说是比较快的。
使用markdown的行内代码块(code
)和代码块(xxx
)来展示代码,可以让代码更加美观易读。