Припустимо, ми визначаємо нескінченну матрицю M
на N^2 -> {0, 1}
(де N
починається 1
замість 0
) таким чином:
M(1, 1)
=0
.Для кожного
x > 1
,M(x, 1)
=1
якщоx
є простим,0
інакше.Для кожного
y > 1
,M(1, y)
=y
-го доданка вThue-Morse sequence
.Для кожного
x, y > 1
,M(x, y)
=M(x, y-1) + M(x-1, y) mod 2
.
Лівий верхній 16x16
розділ цієї матриці виглядає так (з x
рядками та y
стовпцями):
0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0
1 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1
1 1 0 1 1 1 1 0 0 0 0 1 0 0 1 0
0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1
1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 1
0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1
1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1
0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
0 1 0 1 0 1 1 1 1 1 0 0 0 0 0 1
0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0
1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1
0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1
1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0
0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1
0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 1
0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 1
Ваше завдання - створити програму, яка максимально точно оцінить значення довільного запису в цій матриці.
Ваша програма буде приймати два цілі числа x
і y
як вхідні дані у будь-якій обраній вами формі, і повертатиметься M(x, y)
, яке буде або0
або 1
.
Ваш код може бути написаний будь-якою мовою, але не повинен перевищувати 64 кілобайт (65,536 байт) розміру вихідного коду або 2 МБ (2 097 152 байт) загального обсягу використання пам'яті. Ваша програма повинна починатися з порожньої пам’яті (тобто вона не може завантажувати дані з іншого місця) та запускатись незалежно для кожного вводу (тобто вона не може зберігати загальні дані для декількох запусків). Ваша програма також повинна мати можливість оцінювати всі записи у верхньому лівому куті8192x8192
квадраті за розумну кількість часу.
Програма, яка оцінює більшість записів правильно у верхньому лівому 8192 x 8192
квадраті, буде переможцем, а коротший код буде виконувати функції краватки.