Krosh Kaliningrad Contest 2
A. Игра-2
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Два игрока играют в игру. Изначально на доске записано число $$$n$$$. Игроки ходят по очереди. Если текущее число, записанное на доске, больше $$$0$$$, за свой ход игрок может текущее число поделить на 2 с округлением вниз, либо вычесть 1 из текущего числа, но такой ход можно сделать только тогда, когда текущее число нечетное. (то есть $$$4$$$ за ход можно превратить в $$$2$$$, а $$$7$$$ в $$$3$$$ или в $$$6$$$). Игра продолжается, пока на доске не окажется число $$$0$$$. Игрок, который не может сделать ход, проигрывает(то есть тот игрок, который вынужден ходить тогда, когда на доске записано число $$$0$$$). Определите, кто выигрывает при оптимальной игре обоих игроков - тот, кто ходил первым, или тот, кто ходил вторым. Вам нужно ответить на $$$t$$$ независимых запросов. На каждый из них выведите $$$1$$$, если для данного $$$n$$$ выигрывает первый игрок, и $$$0$$$ иначе. Ответы на запросы выводите в том порядке, в котором они идут во входных данных.

Входные данные

В первой строке дано число $$$1 \le t \le 10^3$$$ - число запросов. В следующих $$$t$$$ строках содержатся запросы, в каждой строке - число $$$1 \le n \le 10^{18}$$$.

Выходные данные

Для каждого запроса выведите $$$1$$$, если при данном $$$n$$$ выигрывает первый игрок, и $$$0$$$, если первый игрок проигрывает.

Пример
Входные данные
3
1
2
3
Выходные данные
1
0
1

B. Сумма сумм
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Определим функцию $$$f$$$ от массива целых неотрицательных чисел $$$A$$$ из $$$n$$$ элементов следующим образом: $$$f(A, 0) = $$$ $$$\sum\limits_{i=1}^n a_i$$$;

$$$f(A, i) = $$$$$$\sum\limits_{l=1}^n \sum\limits_{r=l}^n$$$ $$$f(A[l, r], i - 1)$$$, $$$i \gt 0$$$, где $$$A[l, r]$$$ - подмассив массива $$$A$$$ с индексами элементов от $$$l$$$ до $$$r$$$. Вам даны числа $$$n$$$, $$$k$$$ и массив $$$A$$$ из $$$n$$$ элементов. Вычислите $$$f(A, k)$$$ по модулю $$$10^9+7$$$.

Входные данные

В первой строке входных данных находится два целых числа: $$$1 \le n \le 2 * 10^5$$$ и $$$0 \le k \le 2 * 10^5$$$. Во второй строке содержится массив из $$$n$$$ целых чисел $$$0 \le a_i \le 10^9$$$.

Выходные данные

Выведите единственное число - ответ на задачу по модулю $$$10^9+7$$$.

Примеры
Входные данные
5 0
1 2 3 4 5
Выходные данные
15
Входные данные
5 1
1 2 3 4 5
Выходные данные
105
Входные данные
3 2
1 2 3
Выходные данные
42
Примечание

$$$10^9 + 7$$$ – простое число.

C. Крош и пути
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Кроша есть граф, состоящий из $$$n$$$ вершин. Для любой вершины $$$1 \le i \le n - 2$$$ есть ориентированные ребра $$$(i, i + 1)$$$ и $$$(i, i + 2)$$$, для вершины $$$n - 1$$$ есть ориентированное ребро $$$(n - 1, n)$$$. У каждой вершины есть свое значение - $$$a_i$$$. Крош рассматривает пути из вершины $$$1$$$ в вершину $$$n$$$. Стоимость пути определяется как максимум из значений вершин в этом пути. Помогите Крошу посчитать сумму стоимостей по всем возможным путям из вершины $$$1$$$ в вершину $$$n$$$. Выведите ответ по модулю $$$m$$$, где $$$m$$$ - заданное число(необязательно простое).

Входные данные

В первой строке содержатся два числа $$$1 \le n \le 2 * 10^5$$$ и $$$10 \le m \le 10^9$$$ - число вершин и модуль, по которому нужно найти ответ. В следующей строке записано $$$n$$$ целых положительных чисел $$$1 \le a_i \le 10^9$$$ - значения вершин.

Выходные данные

Выведите ответ по модулю $$$m$$$.

Примеры
Входные данные
4 1000
2 3 5 3
Выходные данные
13
Входные данные
1 1000000000
1000000000
Выходные данные
0
Входные данные
5 583723
1000000000 1000000000 1000000000 1000000000 1000000000
Выходные данные
412505

D. Крош и степени двойки
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Крош называет положительное целое число интересным, если оно представляется в виде суммы двух различных степеней двойки, то есть $$$x$$$ $$$-$$$ интересное, если существуют два различных неотрицательных целых числа $$$i \ge 0$$$, $$$j \ge 0$$$, $$$i \neq j$$$, что $$$x = 2^i + 2^j$$$. У Кроша есть большое число $$$m$$$, записанное в двоичной системе счисления. Длина числа не превосходит $$$2*10^5$$$. Помогите Крошу посчитать, сколько есть интересных чисел среди чисел от $$$1$$$ до $$$m$$$.

Входные данные

В первой строке записано число $$$1 \le n \le 2 * 10^5$$$ - длина числа. В следующей строке записано число $$$m$$$ из $$$n$$$ цифр, представленное в двоичной системе счисления. Каждая цифра равна $$$0$$$ или $$$1$$$, при этом первая цифра обязательно равна $$$1$$$.

Выходные данные

Выведите ответ на задачу - количество интересных чисел среди чисел от $$$1$$$ до $$$m$$$.

Примеры
Входные данные
4
1010
Выходные данные
5
Входные данные
2
11
Выходные данные
1

E. Разложения на слагаемые
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам дано число $$$n$$$. Посчитайте количество способов разложить $$$n$$$ на слагаемые, в котором каждое следующее слагаемое хотя бы в $$$2$$$ раза больше чем предыдущее. Выведите остаток от деления этого количества способов на $$$10^9+7$$$.

Входные данные

Вам даны два числа $$$1 \le n \le 3 * 10^5$$$.

Выходные данные

Выведите ответ по модулю $$$10^9+7$$$.

Примеры
Входные данные
10
Выходные данные
6
Входные данные
6
Выходные данные
3

F. Крош и сумма ряда 2
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Крошу в качестве нового домашнего задания по математике задали посчитать следующую сумму ряда: $$$\sum\limits_{n = 1}^{\infty} \frac{(C_n^k) ^ 2}{2^n}$$$, где $$$k$$$ - заданное число. Помогите ему решить эту задачу, для данного $$$k$$$ выведите сумму ряда. Гарантируется, что ответ - целое число. Выведите его по простому модулю $$$10^9+7$$$.

Входные данные

Вам дано число $$$0 \le k \le 10^6$$$.

Выходные данные

Выведите ответ по модулю $$$10^9+7$$$.

Пример
Входные данные
2
Выходные данные
26
Примечание

$$$C_n^k$$$ – число сочетаний из $$$n$$$ по $$$k$$$.

G. Крош и перестановка и математическое ожидание
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам дано число $$$n$$$. Рассмотрим перестановку $$$p$$$ целых чисел от $$$1$$$ до $$$n$$$. Определим $$$f(l, r) = (((p(l)$$$ $$$mod$$$ $$$p(l + 1))$$$ $$$mod$$$ $$$p(l + 2))$$$ $$$mod$$$ ... $$$mod$$$ $$$p(r))$$$. Красотой перестановки $$$B(p)$$$ назовем сумму $$$f(l, r)$$$ по всем возможным подотрезкам перестановки $$$B(p) = \sum_{l = 1}^n \sum_{r = l}^n f(l, r)$$$. Найдите математическое ожидание красоты случайно выбранной перестановки из $$$n$$$ чисел по заданному простому модулю $$$m$$$. Можно показать, что ответ можно представить в виде несократимой дроби $$$\frac{P}{Q}$$$, где $$$P$$$, $$$Q$$$ – целые числа и для данных ограничений $$$Q \neq 0$$$ $$$(mod$$$ $$$m)$$$.

Входные данные

Вам даны два числа $$$1 \le n \le 300$$$ и $$$10^8 \le m \le 10^9$$$. Гарантируется, что $$$m$$$ - простое.

Выходные данные

Выведите ответ на задачу по модулю $$$m$$$.

Примеры
Входные данные
2 998244353
Выходные данные
499122180
Входные данные
1 998244353
Выходные данные
1
Входные данные
3 700000001
Выходные данные
8

H. Крош и перестановка
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Кроша скоро день рождения, и он догадывается, что ему подарят перестановку $$$p$$$ размера $$$n$$$, только не знает, какую именно. В перестановке размера $$$n$$$ все числа различны и каждое число от $$$1$$$ до $$$n$$$ встречается ровно один раз. Крошу может не совсем понравиться перестановка, ведь он любит неподвижные точки $$$-$$$ это такие позиции $$$i$$$, в которых $$$p_i = i$$$, и ему хотелось бы, чтобы в перестановке была хотя бы одна неподвижная точка. Поэтому к перестановке, которую ему подарят, он может применять некоторые операции. За одну операцию он может поменять местами любые два соседних элемента в перестановке. Крош научился всегда применять минимальное возможное количество операций, чтобы получить устраивающую его перестановку, но теперь перед ним стоит вопрос $$$-$$$ а какое максимальное количество операций ему придется выполнить в худшем случае?

Входные данные

Вам дано число $$$1 \le n \le 10^5$$$ $$$-$$$ размер перестановки, которую подарят Крошу.

Выходные данные

В первой строке выходного файла выведите максимально возможное количество операций, которое Крош сделает в худшем случае. Во второй строке выведите перестановку, на которой достигается такое количество операций. Если решений несколько, можете вывести любое.

Пример
Входные данные
2
Выходные данные
1
2 1 

I. Крош и задача на битовые операции
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Кроша есть три числа $$$a$$$, $$$b$$$, $$$c$$$. Помогите ему посчитать количество массивов длиной $$$n$$$, $$$AND$$$ элементов которых равен $$$a$$$, $$$OR$$$ элементов которых равен $$$b$$$, $$$XOR$$$ элементов которых равен $$$c$$$. Два массива считаются различными, если существует позиция, что в разных массивах на этой позиции стоят разные числа. Так как ответ может получиться большим, выведите его остаток от деления на $$$10^9+7$$$.

Входные данные

В первой строке дано количество элементов в массиве $$$1 \le n \le 10^{18}$$$. Во второй строке дано число $$$a$$$. В третьей строке дано число $$$b$$$. В четвертой строке дано число $$$c$$$. Эти числа записаны в двоичной системе счисления, их длины равны и не превосходят $$$10^5$$$. Гарантируется, что число $$$b$$$, обозначающее $$$OR$$$, начинается с $$$1$$$. В числах $$$a$$$ и $$$c$$$ могут быть лидирующие нули.

Выходные данные

Выведите ответ на задачу по модулю $$$10^9+7$$$.

Пример
Входные данные
4
001
101
100
Выходные данные
8

J. Число
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Рассмотрим некоторое число без лидирующих нулей(при этом можем рассмотреть 0). Нам нужно сделать так, чтобы оно делилось на три. За один ход мы можем выбрать любую цифру этого числа и, если она не равна 0, то уменьшить ее на один, либо, если она не равна 9, увеличить ее на 1. После этой операции мы должны получить число без лидирующих нулей(однако может получиться 0). Нужно за минимальное количество операций сделать так, чтобы наше число делилось на 3.

Входные данные

В единственной строке входного файла содержится число n (0 ≤ n ≤ 1018).

Выходные данные

Выведите единственное число - минимальное количество операций, чтобы получилось число, делящееся на 3.

Примеры
Входные данные
12
Выходные данные
0
Входные данные
124
Выходные данные
1
Входные данные
0
Выходные данные
0
Входные данные
123456788
Выходные данные
1