Опис виклику
Для кожного натурального цілого числа n
існує число, яке має вигляд, 111...10...000
що ділиться, n
тобто десятковим числом, яке починається з усіх 1
's і закінчується з 0
' 's' '. Це дуже просто довести: якщо ми візьмемо набір 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
слід працювати.