Строки(121 задач)
Целые числа(112 задач)
Битовые операции(28 задач)
Логический тип(3 задач)
Структуры(18 задач)
Вещественные числа(33 задач)
Множества(16 задач)
Словари(21 задач)
Изучая книгу «Уравнения математической магии» Роман Ойра-Ойра и Кристобаль Хунта обнаружили интересное уравнение: \(a - (a \oplus x) - x = 0\) для заданого \(a\), где знаком \(\oplus\) обозначено побитовое исключающее ИЛИ (XOR) двух чисел (эта операция обозначается как ^ или xor во многих современных языках программирования). Поскольку данное уравнение предназначалось для решения на машине Алдан-3, все вычисления производились над целыми неотрицательными числами по модулю \(2^{32}\). Ойра-Ойра быстро нашел \(x\), являющееся решением, однако Кристобалю Хунте результат Ойры-Ойры показался недостаточно интересным, поэтому он спросил коллегу, сколько всего существует решений данного уравнения. Так как все вычисления производятся по модулю \(2^{32}\), Кристобаля Хунту интересует количество таких решений \(x\), что \(0 \leq x < 2^{32}\). Такая задача оказалась для Ойры-Ойры слишком сложной, поэтому он обратился за помощью к Вам.
В первой строке задано одно целое число \(a\) (\(0 \leq a \leq 2^{32} - 1\)).
Выведите одно целое число — количество неотрицательных решений уравнения.
Определим операцию побитового ИЛИ (XOR). Пусть даны два целых неотрицательных числа \(x\) и \(y\), рассмотрим их двоичные записи (возможно с ведущими нулями): \(x_k \dots x_2 x_1 x_0\) и \(y_k \dots y_2 y_1 y_0\). Здесь \(x_i\) это \(i\)-й бит числа \(x\), а \(y_i\) это \(i\)-й бит числа \(y\). Пусть \(r = x \oplus y\) — результат операции XOR над числами \(x\) и \(y\). Тогда двоичной записью \(r\) будет \(r_k \dots r_2 r_1 r_0\), где:
\(\) r_i = \left\{ \begin{aligned} 1, ~ \text{если} ~ x_i \ne y_i \\ 0, ~ \text{если} ~ x_i = y_i \end{aligned} \right. \(\)
В первом примере решениями уравнения являются \(0\) и \(2147483648 = 2^{31}\), так как \(0 - (0 \oplus 0) - 0 = 0 - 0 - 0 = 0\) и \(0 - (0 \oplus 2147483648) - 2147483648 = -4294967296 = -2^{32} = 0\) по модулю \(2^{32}\).
Во втором примере решениями уравнения являются \(0\), \(2\), \(2147483648 = 2^{31}\) и \(2147483650 = 2^{31} + 2\).
В третьем примере решениями являются все \(x\), для которых выполнено \(0 \leq x < 2^{32}\).
0
2
2
4
4294967295
4294967296
«Опять эти задачи про смайлики!» – грустил Серёжа на олимпиаде. Действительно, на этот раз авторы дали бесконечное число задач, пронумерованных натуральными числами \((1, 2, 3, \dots)\), и все они были про смайлики. Серёжа много тренировался перед олимпиадой, и выбрал себе лучшую тактику: после задачи с номером \(x\) он решает задачу с номером \(x\) xor \((x/2)\), где xor – это побитовое исключающее или, а деление производится с округлением вниз. Например, \(4\) xor \(8\) равно \(12\), \(7\) xor \(11\) тоже равно \(12\), \(5\) xor \((5/2)\) равно \(7\).
Серёжа считает задачу с номером \(x\) хорошей, если он решит \(k\) задач (начиная с \(x\), выбирая их по своей тактике, при этом, возможно он решит некоторые задачи не по одному разу), а (\(k + 1\))-й задачей опять окажется \(x\). Помогите Серёже – для данного \(k\) найдите количество хороших задач. Так как ответ может быть большим, выведите его по модулю \(10^9 + 7\).
В единственной строке дано целое число k , 1 ≤ k ≤ 10 9 .
Выведите одно целое число – количество хороших задач по модулю 10 9 + 7 . Если хороших задач бесконечное количество, выведите - 1 .
2
3
260
15
Мы создали бесконечный кроссворд, взяв прямоугольник размера \(\)\(N \times M\)\(\), заполненный буквами и замостили им бесконечную плоскость. Например, прямоугольник
hsin
...hsinhsinhsinhsin...
...honihonihonihoni...
...hsinhsinhsinhsin...
В данном кроссворде нами случайно (равновероятно) выбирается одна клетка и одно из восьми направлений. Затем начиная с данной клетки в данном направлении выписывается слово длины \(\)\(K\)\(\). Описанный процесс повторяется (независимо от первого раза) второй раз. Вам требуется вычислить вероятность того, что два выписанных слова совпадут.
Первая строка содержит три числа \(\)\(M, N, K\)\(\) (\(\)\(1 \leq N, M \leq 500\)\(\), \(\)\(1 \leq K \leq 10^9\)\(\)) — размеры блока и длина выбираемого слова соответственно.
Следующие \(\)\(M\)\(\) строк содержат по \(\)\(N\)\(\) латинских строчных букв, задавая блок, коим замощается доска. Гарантируется, что в данных есть хотя бы две различные буквы.
Выведите требуемую вероятность в виде сокращённой дроби «p/q» без пробелов и кавычек.
Решение, правильно работающее на тестах, в которых \(\)\(N = M\)\(\) будет оцениваться в \(\)\(62\)\(\) балла.
1 2 2 ab
5/16
2 4 3 honi hsin
19/512
3 3 10 ban ana nab
2/27
По мнению Александра Павловича, текст необычайно красив, если некоторые особые слова (например, «коммунизм», «Ленин», «счастье») встречаются не слишком часто, но и не слишком редко, к тому же достаточно равномерно.
Александр Павлович работает корректором. К нему поступают тексты, он имеет право их некоторым образом менять, после чего возвращает уже исправленную версию.
В связи со своими воззрениями о красоте Александру Павловичу постоянно приходится проверять, сколько особых слов сейчас в той или иной части текста.
Он настолько устал от рутинного подсчёта: «а сколько тут особых слов?», «а сколько тут?», что просит вас помочь ему автоматизировать этот процесс.
Первая строка входного файла содержит текст длины \(L\) (\(1 \leq L \leq 10^5\)), в котором ищутся особые слова.
Следующая строка содержит \(N\) (\(1 \le n \le 10^5\)) — количество особых слов.
Следующие \(n\) строк содержат особые слова. Все особые слова различны. Суммарная длина строк не превосходит \(10^5\).
В следующей строке дано \(Q\) (\(1 \le q \le 10^5\)) — количество интересных Александру Павловичу отрезков.
Следующие \(q\) строк содержат сами отрезки.
Выведите \(q\) чисел — количества вхождений особых слов в соответствующий отрезок текста.
Тесты к данной задаче состоят из семи групп тестов. Баллы за каждую группу тестов ставятся только при прохождении всех тестов группы и всех тестов зависимых групп и теста из условия.
Обозначим за \(LEN_{max}\) максимальную длину особого слова.
abacababa 2 a aba 3 5 9 2 2 2 6
5 0 2
Места в новом трамвае в Загребе организованы в виде сетки, состоящей из \(N\) рядов, пронумерованных от \(1\) до \(N\), и двух столбцов, пронумерованных от \(1\) до \(2\). Расстояние между между сиденьями \((R_a, C_a)\) и \((R_b, C_b)\) равно евклидому расстоянию между центрами соответствующих клеток, а именно \(\sqrt{(R_a - R_b)^2 + (C_a - C_b)^2}\).
Большинство пассажиров предпочитают уединение при использовании общественного транспорта, и они всегда стараются выбрать место, которое находится как можно дальше от других пассажиров. Точнее говоря, когда пассажир садится в трамвай, он выбирает свободное место, расстояние от которого до ближайшего занятого места максимально. Если имеется более одного такого места, он всегда выбирает место с номером в меньшем ряду, а если есть несколько таких мест, он выбирает место с наименьшим столбцом. После того, как пассажир выберет место, он будет сидеть там до тех пор, пока не покинет трамвай. Если трамвай пуст, следующий пассажир, который будет входить, всегда будет выбирать место в ряду 1 и столбце 1.
Напишите программу, которая, учитывая последовательность событий и тип каждого события, определяет, куда сядет каждый из пассажиров. Трамвай изначально пуст.
События пронумерованы от \(1\) до \(M\) в том порядке, в котором они произошли. Существует два вида событий: событие типа «Е» соответствует пассажиру, входящему в трамвай, а событие типа «L» соответствует пассажиру, покидающему трамвай. Для события типа «L» также дается целое число \(P\) - оно указывает, что уходящий пассажир - это тот, который зашел в трамвай во время события \(P\).
Гарантируется, что в трамвае всегда будет хотя бы одно свободное место, когда пассажир пытается войти.
Первая строка ввода содержит два целых числа \(N\) и \(M\) \((1 \le N \le 150 000, 1 \le M \le 30 000)\), количество рядов в трамвае и количество событий. Следующие \(M\) строк содержат описание событий, \(K\)-я из этих строк содержит описание события \(K\) - либо символ «E», либо символ «L», за которым следует целое число \(P_k\) \((1 \le P_k < K)\). Гарантируется, что событие \(P_k\) относится к типу «E», и ни один пассажир не будет пытаться покинуть трамвай дважды.
Для каждого события типа «E» в том порядке, в котором они произошли, выведите строку и номер столбца места, на которое сел пассажир.
В тестах суммарной стоимости в 25 баллов выполняется \(N \le 150\) и \(M \le 150\)
В тестах суммарной стоимости в 45 баллов выполняется \(N \le 1500\) и \(M \le 1500\)
В тестах суммарной стоимости в 65 баллов выполняется \(N \le 150 000\) и \(M \le 1500\)
3 7 E E E L 2 E L 1 E
1 1 3 2 1 2 3 1 1 1
13 9 E E E E E E E E E
1 1 13 2 7 1 4 2 10 1 2 2 3 1 5 1 6 2
10 9 E E E E L 3 E E L 6 E
1 1 10 2 5 2 7 1 4 2 2 2 4 1