📌  相关文章
📜  最小的x,使得1 * n,2 * n,…x * n的所有数字都从1到9(1)

📅  最后修改于: 2023-12-03 15:26:27.763000             🧑  作者: Mango

寻找最小的x使得1 * n,2 * n,…x * n的所有数字都从1到9

这个问题可以转换成,找到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)来展示代码,可以让代码更加美观易读。