| Innopolis Open 2022-2023. Финал |
|---|
| Закончено |
Рассмотрим последовательность целых неотрицательных чисел от $$$L$$$ до $$$R$$$ включительно. Разобьем такую последовательность на $$$n$$$ непустых отрезков и посчитаем побитовое «или» чисел в каждом отрезке. Результат для $$$i$$$-го отрезка назовем $$$f_i$$$.
Решите обратную задачу: по числам $$$f_1, f_2, \ldots, f_n$$$ найдите количество способов выбрать $$$L$$$ и $$$R$$$, а затем разбить все числа от $$$L$$$ до $$$R$$$ на $$$n$$$ непустых отрезков так, чтобы результаты вычисления побитового «или» в каждом отрезке были равны $$$f_1, f_2, \ldots, f_n$$$ соответственно.
Побитовое «или» (or) двух целых неотрицательных чисел вычисляется следующим образом: запишем оба числа в двоичной системе счисления, $$$i$$$-й двоичный разряд результата равен $$$1$$$, если у хотя бы одного из аргументов он равен $$$1$$$. Например, $$$(17 \mathbin{|} 13) = (10001_2 \mathbin{|} 01101_2) = 11101_2 = 29$$$.
В первой строке содержится число $$$n$$$ ($$$1 \le n \le 200\,000$$$). В следующей строке содержатся $$$n$$$ чисел $$$f_i$$$ ($$$0 \le f_i \lt 2^{60}$$$).
Выведите одно число — количество способов выбрать последовательность из подряд идущих чисел и разбить ее на $$$n$$$ отрезков. Поскольку ответ может быть большим, выведите его по модулю $$$1\,000\,000\,007$$$.
| Подзадача | Баллы | Ограничения | |
| 1 | 16 | $$$n = 1$$$ | |
| 2 | 12 | $$$n \le 16$$$, $$$0 \le f_i | lt; 16$$$ |
| 3 | 13 | $$$n \le 256$$$, $$$0 \le f_i | lt; 256$$$ |
| 4 | 18 | $$$n \le 1024$$$, $$$0 \le f_i | lt; 1024$$$ |
| 5 | 24 | $$$n \le 30\,000$$$, $$$0 \le f_i | lt; 2^{30}$$$ |
| 6 | 17 | Без дополнительных ограничений |
3 0 7 7
4
1 11
6
2 4 6
0
В первом примере существует четыре способа разбить массив подряд идущих чисел на три части, так, чтобы побитовые «или» в них были равны $$$0$$$, $$$7$$$ и $$$7$$$ соответственно:
| Название |
|---|


