Descrizione della sfida
Per ogni numero intero positivo nesiste un numero che ha la forma di 111...10...000quello divisibile per nun numero decimale che inizia con tutto 1e finisce con tutto 0. Questo è molto facile da dimostrare: se prendiamo un insieme di n+1numeri diversi nella forma di 111...111(tutti 1), almeno due di essi forniranno lo stesso resto dopo la divisione per n(secondo il principio del buco del piccione). La differenza di questi due numeri sarà divisibile per ne avrà la forma desiderata. Il tuo obiettivo è scrivere un programma che trovi questo numero.
Descrizione dell'input
Un numero intero positivo.
Descrizione dell'output
Un numero psotto forma di 111...10...000, tale che p ≡ 0 (mod n). Se ne trovi più di uno, visualizzane uno (non è necessario che sia il più piccolo).
Gli appunti
Il tuo programma deve dare la risposta in un ragionevole lasso di tempo. Ciò significa che la forza bruta non è consentita:
p = 0
while (p != 11..10.00 and p % n != 0)
p++
Né questo è:
do
p = random_int()
while (p != 11..10.00 and p % n != 0)
11..10..00È consentito scorrere i numeri sotto forma di .
Il tuo programma non ha bisogno di gestire un input arbitrariamente grande - il limite superiore è qualunque sia il limite superiore della tua lingua.
Output di esempio
2: 10
3: 1110
12: 11100
49: 1111111111111111111111111111111111111111110
102: 1111111111111111111111111111111111111111111111110
1e almeno uno 0, altrimenti 0è una soluzione per qualsiasi input. (Sarebbe bello chiarire questo però.)
1dovrebbe funzionare.