挑战说明
对于每个正整数n
,存在一个其形式111...10...000
可被n
整数整除的数字,即以all开头并以all 1
结尾的十进制数0
。这很容易证明:如果我们采用(全)n+1
形式的一组不同数字,那么除以后(根据信鸽原理),至少其中两个将给出相同的余数。这两个数字的差可以被期望的形式整除。您的目标是编写一个找到该数字的程序。111...111
1
n
n
输入说明
一个正整数。
输出说明
许多p
的形式111...10...000
,使得p ≡ 0 (mod n)
。如果找到多个-请显示其中任何一个(不一定是最小的)。
笔记
您的程序必须在合理的时间内给出答案。这意味着不允许强行使用:
p = 0
while (p != 11..10.00 and p % n != 0)
p++
这也不是:
do
p = random_int()
while (p != 11..10.00 and p % n != 0)
11..10..00
允许以形式遍历数字。
您的程序不需要处理任意大的输入-上限就是您语言的上限。
样本输出
2: 10
3: 1110
12: 11100
49: 1111111111111111111111111111111111111111110
102: 1111111111111111111111111111111111111111111111110
1
至少一个0
,至少一个,否则0
是任何输入的解决方案。(尽管可以澄清这一点。)
1
可以了。