Змінний Harmonic серія є добре відомим сходящимся поруч.
"Ясно", очевидно, що вона сходиться до природного журналу 2. Або це?
Оскільки серія не є абсолютно збіжною , просто переставивши умови, я можу змусити її підійти до всього, що я хочу. Припустимо, я хочу, щоб серія сходилася е . Все, що я повинен зробити, це це:
Якщо ви не впіймали шаблон, то очевидного немає. Ось як це працює:
- Розгляньте умови чергування гармонічного ряду з точки зору позитивних та негативних.
- Додайте разом достатньо позитивних термінів, щоб перевищити нашу мету (е). (ака
sum > target
) - Віднімайте наступний від’ємний доданок.
- Поверніться до 2.
Зауважте, що на кроці 2, якщо наш sum == target
, вам слід додати ще один позитивний термін.
З цього можна визначити послідовність, пов'язану з кожним числом, наступним чином:
- Дотримуйтесь алгоритму, наведеного вище
- Для кожного позитивного терміну виведіть 1.
- Для кожного негативного терміна виведіть 0.
Назвемо цю послідовність «Гармонічною бітною схемою» числа. Наприклад, HBP з e починається так:
1, 1, 1, 1, <32 times>, 0, 1, 1, <54 times>, 0, 1, 1, ...
Ваше завдання:
Вам дадуть:
- раціональна ціль введення в діапазоні [-10, 10] (зауважте: навіть досягнення 10 через гармонічний ряд потребує багатьох мільйонів термінів). Це може бути десятковий (ака
1.1
) або ви можете приймати раціональне безпосередньо (ака12/100
) - позитивний
int
n введення, вказуючи кількість термінів Гармонійної бітової моделі для виведення.
Від вас очікується виведення точної гармонійної схеми бітів цілі на вказану кількість термінів. Ви можете виводити значення, розділені пробілом, розділені комами, ніякого поділу тощо; до тих пір, поки картина 0s і 1s добре видно і читається зліва направо при послідовному розділенні.
Випробування
>>> 0, 1
1
>>> 0, 2
10
>>> 0, 7
1000010
>>> 1, 10
1101011011
>>> 1.01, 3
110
>>> 1.01, 24
110101101101101101101101
>>> 2.71, 32
11111111111111111111111111111111
>>> 2.71, 144
111111111111111111111111111111110111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111
>>> -9.8, 100
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Зауважте, що оскільки -9.8
настільки великий, перше, 1
що виводиться, знаходиться десь біля цього 149496620
терміну (що було обчислено через поплавці, тому значення може бути неточним).
h a p q
замістьh p q a
збереження байта.