📅  最后修改于: 2023-12-03 15:07:34.261000             🧑  作者: Mango
给定一个数字 n
,找出一个最小的数字 p
满足:把 n
乘以 p
后得到的数字只用到了 0
或 1
,如果不存在 p
,则返回 -1
。
一个整数 n
,1 <= n <= 200
。
一个整数,表示最小的数字 p
,如果不存在则返回 -1
。
例子输入:
68
例子输出:
25
当 n
乘以 25
后,得到的数字只用到了 0
或 1
,即 1700
。
这道题的解决方法是通过尝试从小到大枚举 p
的值来找到最小的 p
。
代码如下:
def find_p(n):
for i in range(1, 10001):
num = str(n * i)
digits = set(num)
if len(digits) == 2 and '0' in digits and '1' in digits:
return i
return -1
在这个代码中,我们从 1
开始枚举 p
的值,逐个尝试将 n
乘以 p
得到的数字转化为字符串 num
,之后利用集合 digits
来过滤出数字只用到了 0
或 1
的情况。
在我们找到了第一个符合条件的数字之后,就可以直接输出并返回结果了。如果存在这样的数字,但所有的数字值都大于 10000
,则返回 -1
表示无解。