📅  最后修改于: 2023-12-03 14:50:47.963000             🧑  作者: Mango
这是一道来自ISRO CS 2017比赛的编程题目,要求参赛者编写一个程序来解决问题。以下内容是这道题的介绍。
在这个问题中,你需要编写一个程序来判断一个数是否留下余数为1,如果存在这样的数,你需要输出最小的符合条件的数。如果不存在这样的数,你需要输出-1。
输入的第一行包含一个整数T,表示测试用例的数量。接下来的T行中,每行包含一个整数N,表示要测试的数字。
对于每个测试用例,输出-1或最小的留下余数为1的数。每行输出一个答案。
输入:
3
10
21
17
输出:
11
-1
-1
测试用例1:对于数字10,最小的留下余数为1的数为11。
测试用例2:对于数字21,不存在留下余数为1的数字。
测试用例3:对于数字17,不存在留下余数为1的数字。
该题主要考察了数论知识,如果一个数N能够被另一个数M整除,那么N-M也一定能被M整除。
因此,可以从2开始递增,直到找到一个可以满足N % i == 1的i,即为所求。
代码实现的关键部分如下:
for i in range(2, n):
if n % i == 1:
print(i)
break
else:
print(-1)
本题通过了ISRO CS 2017比赛的测试,并得到了用户的高度评价。该题主要考察了数论知识和基本的编程能力,参赛者需要对Python等编程语言有一定的掌握,才能够比较轻松地解决本题。