Descripción del desafío
Para cada número entero positivo nexiste un número que tiene la forma de 111...10...000que es divisible por nej. Un número decimal que comienza con todos 1y termina con todos 0. Esto es muy fácil de probar: si tomamos un conjunto de n+1números diferentes en forma de 111...111(todos 1), al menos dos de ellos darán el mismo resto después de la división por n(según el principio del casillero). La diferencia de estos dos números será divisible por ny tendrá la forma deseada. Su objetivo es escribir un programa que encuentre este número.
Descripción de entrada
Un entero positivo.
Descripción de salida
Un número pen forma de 111...10...000tal que p ≡ 0 (mod n). Si encuentra más de uno, muestre cualquiera de ellos (no es necesario que sea el más pequeño).
Notas
Su programa tiene que dar la respuesta en un tiempo razonable. Lo que significa que la fuerza bruta no está permitida:
p = 0
while (p != 11..10.00 and p % n != 0)
p++
Tampoco es esto:
do
p = random_int()
while (p != 11..10.00 and p % n != 0)
Iterar a través de los números en forma de 11..10..00está permitido.
Su programa no necesita manejar una entrada arbitrariamente grande: el límite superior es el límite superior de su idioma.
Resultados de muestra
2: 10
3: 1110
12: 11100
49: 1111111111111111111111111111111111111111110
102: 1111111111111111111111111111111111111111111111110
1y al menos uno 0, de lo contrario 0es una solución para cualquier entrada. (Sería bueno aclarar esto sin embargo.)
1debería funcionar.