Codeforces Round 635 (Div. 1) |
---|
Закончено |
Это сложная версия этой задачи. Единственное различие между простой и сложной версиями заключается в ограничениях на $$$m$$$. Вы можете делать взломы, только если обе версии задачи сданы.
Chiori очень любит куклы и сейчас она собирается украсить свою спальню!
Так как Chiori коллекционирует куклы, всего у нее $$$n$$$ кукол, $$$i$$$-я из этих кукол имеет неотрицательное целое число $$$a_i$$$ ($$$a_i < 2^m$$$, $$$m$$$ дано). Chiori хочет выбрать некоторых кукол (возможно ноль) для украшения. Таким образом, всего существует $$$2^n$$$ способов.
Обозначим за $$$x$$$ побитовую xor сумму значений у кукол, выбранных Chiori (в случае, если Chiori не выбрала ни одной куклы, $$$x = 0$$$). Значением способа выбора кукол назовем количество битов равных $$$1$$$ в двоичном представлении $$$x$$$. Более формально, это число также равно количеству индексов $$$0 \leq i < m$$$, таких что $$$\left\lfloor \frac{x}{2^i} \right\rfloor$$$ нечетно.
Посчитайте для Chiori количество способов выбрать куклы со значением $$$i$$$ для всех целых $$$i$$$ от $$$0$$$ до $$$m$$$. Поскольку эти числа могут быть очень большими, вы должны посчитать их по модулю $$$998\,244\,353$$$.
В первой строке находится два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n \le 2 \cdot 10^5$$$, $$$0 \le m \le 53$$$) — количество кукол и максимальное возможное значение выбора нескольких кукол.
Во второй строке находится $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \le a_i < 2^m$$$) — числа у кукол.
Выведите $$$m+1$$$ целое число $$$p_0, p_1, \ldots, p_m$$$ — $$$p_i$$$ равно количеству способов выбрать несколько кукол, так чтобы полученное значение выбора кукол оказалось равным $$$i$$$ по модулю $$$998\,244\,353$$$.
4 4 3 5 8 14
2 2 6 6 0
6 7 11 45 14 9 19 81
1 2 11 20 15 10 5 0
Название |
---|