Ctrl K

Дуэль на стирание с XOR

Сложная
На столе лежат плитки с числами tiles. Аня и Борис по очереди убирают со стола ровно одну плитку, первой ходит Аня. Следим за побитовым XOR всех чисел, которые остались на столе (XOR одной плитки — её число, XOR пустого стола — 0): - если в начале хода XOR оставшихся плиток равен 0, игрок, чей это ход, сразу побеждает; - если игрок своим ходом делает XOR оставшихся плиток равным 0, он проигрывает. Оба играют наилучшим образом. Верните True, если побеждает Аня, и False иначе.
Пример 1
tiles=[4, 4, 6] → False

Если Аня уберёт 6, останутся [4, 4] с XOR 0 — она проиграла. Если уберёт 4, останутся [4, 6] с XOR 2, Борис убирает любую плитку, и последнюю придётся убрать Ане, обнулив XOR. Аня проигрывает.

Пример 2
tiles=[5, 9] → True

Какую бы плитку ни убрала Аня, у Бориса останется одна плитка с ненулевым числом, и, убрав её, он обнулит XOR. Аня побеждает.

Пример 3
tiles=[3, 5, 6] → True

3 XOR 5 XOR 6 = 0 ещё до первого хода, поэтому Аня побеждает сразу.

Ограничения
  • 1 ≤ len(tiles) ≤ 1000
  • 0 ≤ tiles[i] < 2¹⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБери из любой кучки СредняяКонь против пешек СложнаяИЛИ всех сумм подмножеств СредняяШахматка перестановками строк и столбцов СложнаяДве группы с одинаковым средним Сложная
загружаем Python…
Вход
tiles=[4, 4, 6]
Ожидается
False

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 119 тестов на сервере, включая скрытые.