Дано список цілих чисел {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}
. Для тих, хто цікавиться, ці цифри використовуються в розрахунку на будні дні.
Будній день = (m[n] + d + y + y>>2 + y/400 - y/100) % 7;
, де m[n]
- вираз, який я шукаю, d
- день місяця, y
- year - (month <= 2)
.
Побудуйте вираз, що складається з арифметичних, логічних та порозрядних операторів, який виведе для додатного цілого n
числа m
так, що m % 7
дорівнює n-му номеру у списку.
Гілки, потрійні оператори, пошук таблиць і покажчики не дозволяються.
Оцінка:
1 - для | & ^ ~ >> <<
операторів
1,1 - для + - < > <= >= == != ! && ||
операторів
1,2 - для *
оператора
1,4 - для / %
операторів
Відповідь з найнижчою кількістю перемог
Особисто я знайшов:
(41*n)>>4+((n+61)>>4)<<2
з оцінкою 6,4. Я подумав, що це буде важко знайти настільки забезпечене власне вираження для початку.
table lookups
Я думаю, що цікаві фрази ...