📌  相关文章
📜  国际空间研究组织 | ISRO CS 2015 |问题 14(1)

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

ISRO CS 2015 - 问题 14
题目描述

给定一个数字 n,找出一个最小的数字 p 满足:把 n 乘以 p 后得到的数字只用到了 01,如果不存在 p,则返回 -1

输入

一个整数 n1 <= n <= 200

输出

一个整数,表示最小的数字 p,如果不存在则返回 -1

例子

例子输入

68

例子输出:

25
说明

n 乘以 25 后,得到的数字只用到了 01,即 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 来过滤出数字只用到了 01 的情况。

在我们找到了第一个符合条件的数字之后,就可以直接输出并返回结果了。如果存在这样的数字,但所有的数字值都大于 10000,则返回 -1 表示无解。