Opis wyzwania
Dla każdej dodatniej liczby całkowitej nistnieje liczba, której postać 111...10...000jest podzielna przez nnp. Liczbę dziesiętną, która zaczyna się od wszystkich 1, a kończy na wszystkich 0. Jest to bardzo łatwe do udowodnienia: jeśli weźmiemy zestaw n+1różnych liczb w postaci 111...111(wszystkich 1), to co najmniej dwie z nich podadzą tę samą resztę po podzieleniu przez n(zgodnie z zasadą szufladki). Różnica tych dwóch liczb będzie podzielna przez ni będzie miała pożądaną formę. Twoim celem jest napisanie programu, który znajdzie ten numer.
Opis wejściowy
Dodatnia liczba całkowita.
Opis wyników
Liczba pw postaci 111...10...000takiej, że p ≡ 0 (mod n). Jeśli znajdziesz więcej niż jeden - wyświetl dowolny z nich (nie musi być najmniejszy).
Uwagi
Twój program musi udzielić odpowiedzi w rozsądnym czasie. Co oznacza, że brutalne wymuszanie jest niedozwolone:
p = 0
while (p != 11..10.00 and p % n != 0)
p++
To też nie jest:
do
p = random_int()
while (p != 11..10.00 and p % n != 0)
Iterowanie po liczbach w postaci 11..10..00jest dozwolone.
Twój program nie musi obsługiwać dowolnie dużych danych wejściowych - górna granica jest równa górnej granicy twojego języka.
Przykładowe wyniki
2: 10
3: 1110
12: 11100
49: 1111111111111111111111111111111111111111110
102: 1111111111111111111111111111111111111111111111110
1najmniej jeden 0, w przeciwnym razie 0jest to rozwiązanie dla każdego wejścia. (Dobrze by to jednak wyjaśnić.)
1powinno działać.