Кінтопія розмістила тут виклик для обчислення мультиноміальних коефіцієнтів (частина тексту тут скопійована звідти). Існує цікавий алгоритм для обчислення багаточленних коефіцієнтів mod 2.
Дано список чисел, k 1 , k 2 , ..., k m , виведіть залишок багаточленного коефіцієнта:
наведеного по модулю 2. Наступний алгоритм робить це ефективно: для кожного до я , обчислити двоичное розкладання до я , тобто, знайти в Ij таким чином, що кожна IJ або 1 , або 0 і
Якщо є j таке, що a т = а Sj = 1 при г ≠ с, то асоційованиммодулю 2 поліноміальний коефіцієнт дорівнює 0,іншому випадкумодулю 2 поліноміальний коефіцієнт дорівнює 1.
Завдання
Напишіть програму або функцію, яка приймає m чисел, k 1 , k 2 , ..., k m і виводить або повертає відповідний мультиноміальний коефіцієнт. Ваша програма може додатково приймати m як додатковий аргумент.
Ці числа можуть бути введені у будь-якому форматі, який подобається, наприклад, згруповано у списки або закодовано унарним чи будь-яким іншим, якщо фактичне обчислення мультиноміального коефіцієнта виконується вашим кодом, а не процес кодування.
Вихід може бути будь-яким правильним значенням, якщо мультиноміальний коефіцієнт непарний, а будь-яке значення фальси, якщо мультиноміальний коефіцієнт парний.
Вбудовані модулі, призначені для обчислення мультиноміального коефіцієнта, не допускаються.
Застосовуються стандартні лазівки.
Оцінка балів
Це код гольфу: найкоротше рішення в байтах.
Приклади:
Щоб знайти мультиноміальний коефіцієнт 7, 16 та 1000, ми двійково розширимо кожен з них:
Оскільки жоден стовпець не має більше одного 1, мультиноміальний коефіцієнт є непарним, а значить, ми повинні вивести щось правдоподібне.
Щоб знайти мультиноміальний коефіцієнт 7, 16 та 76, двійкові розширимо кожен з них:
Оскільки і 76, і 7 мають 4 у бінарному розширенні, мультиноміальний коефіцієнт є рівним, тому ми виводимо значення фальси.
Тестові приклади:
Input: [2, 0, 1]
Output: Truthy
Input: [5,4,3,2,1]
Output: Falsey
Input: [1,2,4,8,16]
Output: Truthy
Input: [7,16,76]
Output: Falsey
Input: [7,16,1000]
Output: Truthy
Input: [545, 1044, 266, 2240]
Output: Truthy
Input: [1282, 2068, 137, 584]
Output: Falsey
Input: [274728976, 546308480, 67272744, 135004166, 16790592, 33636865]
Output: Truthy
Input: [134285315, 33849872, 553780288, 544928, 4202764, 345243648]
Output: Falsey
==
рівністю могли б врятувати байт, якби дозволено перевертати truthy та falsey.