Descrição do Desafio
Para todo número inteiro positivo nexiste um número que tem a forma de 111...10...000que é divisível por, nisto é, um número decimal que começa com todos 1e termina com todos 0. É muito fácil provar: se pegarmos um conjunto de n+1números diferentes na forma de111...111 (todos 1), pelo menos dois deles fornecerão o mesmo restante após a divisão por n(conforme o princípio do buraco de pombo). A diferença desses dois números será divisível por ne terá a forma desejada. Seu objetivo é escrever um programa que encontre esse número.
Descrição da entrada
Um número inteiro positivo.
Descrição da saída
Um número pna forma de 111...10...000, de modo quep ≡ 0 (mod n) . Se você encontrar mais de um - exiba qualquer um deles (não precisa ser o menor).
Notas
Seu programa deve fornecer a resposta em um período de tempo razoável. O que significa que a força bruta não é permitida:
p = 0
while (p != 11..10.00 and p % n != 0)
p++
Nem é isso:
do
p = random_int()
while (p != 11..10.00 and p % n != 0)
A iteração pelos números na forma de 11..10..00é permitida.
Seu programa não precisa lidar com uma entrada arbitrariamente grande - o limite superior é o limite superior do seu idioma.
Saídas de amostra
2: 10
3: 1110
12: 11100
49: 1111111111111111111111111111111111111111110
102: 1111111111111111111111111111111111111111111111110
1e pelo menos um 0, caso contrário, 0é uma solução para qualquer entrada. (Seria bom esclarecer isso embora.)
1deve funcionar.