Вступ
Метод середнього квадрату використовується для генерації псевдовипадкових чисел. Однак це не дуже вдалий метод на практиці, оскільки його період, як правило, дуже короткий і має деякі серйозні слабкі місця. Як це працює? Візьмемо приклад:
Для насіння вибираємо 123456
:
Seed 123456
Насіння в квадраті (насіння × насіння), дорівнює:
Seed² 15241383936
Ми почали з 6-значного числа. Це означає, що насіння в квадраті має дати 12-значне число. Якщо це не так, для компенсації додаються провідні нулі:
Seed² 015241383936
Потім беремо середню частину числа, того ж розміру , що і насіння:
Seed² 015241383936
^^^^^^
Це наше нове насіння : 241383
. Повторюємо той самий процес, як показано вище. Ми отримуємо наступне:
0: 123456
015241383936
| |
1: 241383
058265752689
| |
2: 265752
070624125504
| |
3: 624125
389532015625
| |
4: 532015
283039960225
| |
5: 039960
001596801600
| |
6: 596801
І це триває деякий час ... Тепер ми знаємо, що таке метод середнього квадрату, давайте приступимо до виклику:
Завдання
Кожне насіння має в період . Період n- дигідного насіння не може бути більше 8 n . Наприклад, насіння 82
. Це дало б таку послідовність:
82 > 72 > 18 > 32 > 02 > 00 > 00 > 00 > 00 > 00
|____|____|____|____|____|____|____|____|____|___...
0 1 2 3 4 5 6 7 8 9
Ви можете бачити, що період дорівнює 5 , перш ніж знову містити ту саму цифру. Ваше завдання полягає в тому, що, якщо насіння насіння більше 0, не містить провідних нулів, виведіть період насіння . Отже, у цьому випадку вам потрібно вивести 5
.
Інший приклад:, 24
який дає наступне:
24 > 57 > 24
|____|____|___...
0 1 2
Як бачите, не всі послідовності закінчуються 0
. Цей цикл має період 1 .
Тестові справи
Input > Output
24 > 1
82 > 5
123456 > 146
8989 > 68
789987 > 226
Пастебіни з послідовностями для 123456 , 8989 , 789987
Це код-гольф , тому подання з найменшою кількістю байтів виграє!
Можна припустити, що вхід ніколи не буде мати неоднакову кількість цифр.
24
є періодичним (з періодом 2, я б сказав),82
це в кінцевому рахунку , періодична (з періодом 1).