2021-2022 Олимпиада Когнитивные технологии, отборочный этап
A. Треугольники
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

По кругу на одинаковом расстоянии друг от друга расположены $$$12$$$ точек. Они подписаны числами $$$1,\,2,\,3,\,1,\,2,\,3,\,1,\,2,\,3,\,1,\,2,\,3$$$ (см. рисунок).

Сколько существует остроугольных треугольников с вершинами в этих точках, у которых все три вершины подписаны тремя различными числами? Треугольник называется остроугольным, если все его углы строго меньше $$$90$$$ градусов.

Примечание

В оригинальном соревновании данная задача подразумевала ввод ответа напрямую в специальное окно ввода.

В данном соревновании решением задачи является программа на любом языке программирования, ничего не считывающая из входных данных и выводящая единственное число — ответ на задачу.

Например, если вы считаете, что ответом на задачу является число $$$-1$$$, то вы можете отправить следующее решение, выбрав в качестве компилятора Python или PyPy:

print(-1)

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

Шахматная доска $$$n \times n$$$ заполнена целыми числами от $$$1$$$ до $$$n^2$$$. Каждое число встречается ровно 1 раз. Белые клетки пронумерованы подряд, затем начинается нумерация чёрных клеток (см. пример). Левый верхний угол доски всегда является белым.

Пример для $$$n = 4$$$:

Пример для $$$n = 5$$$:

Требуется для матрицы $$$15 \times 15$$$ найти сумму чисел в $$$7$$$ строке. Нумерация строк начинается с $$$1$$$.

Например, на доске размером $$$4 \times 4$$$ (пример 1) сумма чисел в строке с номером $$$3$$$ равна $$$5 + 13 + 6 + 14 = 38$$$.

Примечание

В оригинальном соревновании данная задача подразумевала ввод ответа напрямую в специальное окно ввода.

В данном соревновании решением задачи является программа на любом языке программирования, ничего не считывающая из входных данных и выводящая единственное число — ответ на задачу.

Например, если вы считаете, что ответом на задачу является число $$$-1$$$, то вы можете отправить следующее решение, выбрав в качестве компилятора Python или PyPy:

print(-1)

C. Тролль Сева
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У жирного тролля Севы есть два волшебных стула. Если волшебный стул перевернуть, то он превратится в 4 волшебных стула. Однажды Сева решил позвать к себе в гости $$$n - 1$$$ друзей — жирных троллей. Теперь Сева задумался о том, что всех гостей надо будет рассадить на стулья (и самому тоже куда-то сесть). Известно следующее:

  • Тролли очень жирные, поэтому каждый тролль может поместиться на любом количестве стульев, отличном от нуля.
  • Тролли очень жадные, поэтому они будут недовольны, если останется хотя бы один свободный стул. («Почему этот стул не достался мне?» — будет думать каждый тролль)
  • Тролли очень завистливые, поэтому каждый тролль будет недоволен, если какой-то другой тролль займёт больше стульев, чем он сам.

Сева слишком занят подготовкой развлекательных мероприятий для друзей, поэтому он просит у вас помощи. Напишите программу, которая определит, можно ли рассадить Севу и его гостей на стулья так, чтобы никто не оказался недовольным.

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

В первой строке записано одно целое число $$$t$$$ $$$(1 \le t \le 10^4)$$$ — количество наборов входных данных. Далее следуют $$$t$$$ наборов входных данных.

Каждый набор входных данных состоит из одной строки, содержащей одно целое число $$$n$$$ ($$$2 \le n \le 10^9$$$) — общее число троллей ($$$n - 1$$$ гостей и 1 Сева).

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

Для каждого набора входных данных в отдельной строке выведите «YES» (без кавычек), если можно рассадить всех троллей по стульям так, что ни один из троллей не останется недовольным. И «NO» (без кавычек) в противном случае.

Пример
Входные данные
4
2
3
5
7
Выходные данные
YES
NO
YES
YES
Примечание

В первом примере можно посадить двух троллей на 2 стула, не совершая никаких дополнительных переворотов.

Во втором примере не получится сделать рассадку, какое бы количество переворотов не было совершено.

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

В четвёртом примере можно сделать 4 переворота волшебных стульев. Всего получится 14 волшебных стульев — каждому из 7 троллей достанется по 2 стула.

D. (Не)достижимый идеал
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Недавно Софья Ковалевская прочла про понятие «идеальной пары» целых чисел. Пара целых чисел $$$a$$$ и $$$b$$$ называется идеальной, если $$$\gcd(a, b) = \min(a, b)$$$, где $$$\gcd$$$ — наибольший общий делитель двух целых чисел.

Теперь Софья не может уснуть, пока не узнает количество чисел из полуинтервала $$$[l, r)$$$, образующих идеальную пару с числом $$$n$$$. Помогите ей обрести покой на ближайшую ночь.

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

В первой строке записано одно целое число $$$t$$$ $$$(1 \le t \le 10^4)$$$  — количество ночей, в которые Софья не может уснуть. Далее следуют $$$t$$$ наборов входных данных.

Каждый набор входных данных состоит из одной строки, содержащей три целых числа $$$n$$$, $$$l$$$, $$$r$$$ $$$(1 \le n \le l \lt r \le 10^{18})$$$ — число, для которого необходимо найти количество идеальных пар, и границы полуинтервала соответственно.

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

Для каждого набора входных данных в отдельной строке выведите искомое число  — количество чисел, образующих с $$$n$$$ идеальную пару в данном полуинтервале $$$[l, r)$$$.

Пример
Входные данные
4
1 2 3
5 5 15
2 2 3
1 1 1000000000000000000
Выходные данные
1
2
1
999999999999999999
Примечание

В первом примере $$$\gcd(1, 2) = \min(1, 2) = 1$$$. Других чисел в полуинтервале нет, поэтому ответ равен $$$1$$$.

Во втором примере $$$\gcd(5, 5) = \min(5, 5) = 5$$$, $$$\gcd(5, 10) = \min(5, 10) = 5$$$. Несмотря на то, что число $$$15$$$ подходит числу $$$5$$$, оно не входит в полуинтервал $$$[5,15)$$$ и, следовательно, в ответе не учитывается.

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

Буквально несколько секунд назад произошла хакерская атака на Цитадель Риков. Несколько одинаковых копий опасной программы проникло на главный сервер. Никто не знает, откуда взялся этот злосчастный вирус и какие у него цели (не иначе опять Рик C137 балуется).

Пока известно только одно: каждая копия вируса, не останавливаясь, порождает несколько таких же копий каждую секунду. Каждая созданная копия начинает делать то же самое - порождать несколько своих копий. А те копии начинают порождать свои копии...

На борьбу с вирусом брошены все свободные Рики и Морти, но пока даже неизвестны параметры роста вируса. Всё, что удалось выяснить  — что спустя $$$3$$$ секунды после атаки на сервере было уже $$$1029$$$ копий вируса, а через $$$6$$$ секунд  — $$$352947$$$.

Помогите Совету Риков - вычислите точное число копий вируса, находившихся на сервере через $$$t$$$ секунд после начала атаки.

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

В первой строке записано одно целое число $$$q$$$ $$$(1 \le q \le 11)$$$ — количество наборов входных данных. Далее следуют $$$q$$$ наборов входных данных.

В каждой $$$i$$$-й строке, соответствующей $$$i$$$-му набору входных данных, дано единственное целое число $$$t_i\text{ }\left(0 \le t_i \le 10\right)$$$ — количество секунд, прошедших с момента проникновения вредоносного вируса в Цитадель Риков.

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

Для каждого набора входных данных выведите одно целое число — количество одинаковых копий вируса спустя $$$t_i$$$ секунд с момента начала хакерской атаки.

Пример
Входные данные
2
3
6
Выходные данные
1029
352947
Примечание

Тест соответствует данным из условия (так как только эти данные есть в нашем распоряжении).

В первом тестовом примере спустя $$$t_1 = 3$$$ секунды с момента атаки на сервере находилось $$$1029$$$ одинаковых копий опасного вируса.

Во втором тестовом примере спустя $$$t_2 = 6$$$ секунд с момента атаки их уже стало $$$352947$$$.

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

Паровозик Томас устроился поездом в московское метро. Он будет работать на кольцевой линии. За свою рабочую смену он должен проехать свой маршрут ровно $$$k$$$ раз подряд.

Маршрут начинается и заканчивается на станции Октябрьская. Весь маршрут поезд проезжает за $$$d$$$ минут. Как только поезд заканчивает маршрут, он тут же отправляется на новый. Соответственно, если поезд начал маршрут во время $$$t$$$, то на следующий маршрут он отправится ровно во время $$$t + d$$$, не раньше и не позже.

Томас нашел статистику загруженности поездов: если поезд начал маршрут в момент времени $$$i$$$, то в поезд зайдет $$$a_i$$$ пассажиров на всем маршруте. Всего за день будет выполнено $$$n$$$ маршрутов - в $$$1$$$-ю, $$$2$$$-ю, $$$\dots$$$, $$$n$$$-ю минуты.

Томасу стало интересно, в какой момент времени начинается самая загруженная смена. Загруженность смены равна суммарному количеству зашедших в поезд пассажиров по всем $$$k$$$ маршрутам, которые Томас проедет.

Гарантируется, что всегда существует хотя бы одна смена, за которую можно проехать маршрут $$$k$$$ раз подряд.

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

В первой строке записано одно целое число $$$t$$$ $$$(1 \le t \le 10^4)$$$  — количество наборов входных данных. Далее следуют $$$t$$$ наборов входных данных.

Каждый из наборов входных данных задаётся следующим образом.

В первой строке следуют три целых числа $$$n, k, d$$$ $$$(1 \le n, k, d \le 2 \cdot 10^5)$$$  — общее количество отправляющихся на маршрут поездов за день, количество маршрутов в трудовых обязанностях Томаса и продолжительность одного маршрута.

Во второй строке следует $$$n$$$ целых чисел $$$a_i$$$ $$$(1 \le a_i \le 10^9)$$$  — количество пассажиров, зашедших в поезд на маршруте, начавшемся в момент времени $$$i$$$.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$2 \cdot 10^5$$$.

Гарантируется, что всегда существует хотя бы одна смена, за которую можно проехать маршрут $$$k$$$ раз.

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

Для каждого набора входных данных выведите одно целое число — максимальное количество пассажиров, которых можно перевести за одну смену.

Пример
Входные данные
2
10 3 2
2 3 4 9 8 7 6 1 5 10
10 3 3
1 1 1000000000 1 1 1000000000 1 1 1000000000 1
Выходные данные
19
3000000000
Примечание

В первом наборе входных данных существуют следующие возможные смены из $$$k = 3$$$ маршрутов с продолжительностью $$$d = 2$$$:

  1. ($$$2$$$, $$$4$$$, $$$8$$$)  — сумма $$$14$$$;
  2. ($$$3$$$, $$$9$$$, $$$7$$$)  — сумма $$$19$$$;
  3. ($$$4$$$, $$$8$$$, $$$6$$$)  — сумма $$$18$$$;
  4. ($$$9$$$, $$$7$$$, $$$1$$$)  — сумма $$$17$$$;
  5. ($$$8$$$, $$$6$$$, $$$5$$$)  — сумма $$$19$$$;
  6. ($$$7$$$, $$$1$$$, $$$10$$$)  — сумма $$$18$$$.

Максимальное количество перевезенных пассажиров достигается на сменах, начатых во $$$2$$$-й и $$$5$$$-й моменты времени.

Во втором наборе входных данных существуют только $$$4$$$ возможные смены из $$$k = 3$$$ маршрутов с продолжительностью $$$d = 3$$$:

  1. ($$$1$$$, $$$1$$$, $$$1$$$)  — сумма $$$3$$$;
  2. ($$$1$$$, $$$1$$$, $$$1$$$)  — сумма $$$3$$$;
  3. ($$$1000000000$$$, $$$1000000000$$$, $$$1000000000$$$)  — сумма $$$3000000000$$$;
  4. ($$$1$$$, $$$1$$$, $$$1$$$)  — сумма $$$3$$$.

Максимальное количество людей будет перевезено за смену $$$3$$$ и только за неё.

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

Алиса Селезнёва из 2074 года и Зелибоба с улицы Сезам решили сыграть во внеземную игру с внеземными правилами.

Игровое поле представляет собой таблицу из $$$n \times m$$$ клеток размером $$$1 \times 1$$$.

В левом верхнем углу $$$\left(1,1\right)$$$ таблицы расположена фишка. Будем говорить, что фишка передвинулась на $$$k$$$ клеток, если из клетки $$$\left(x,y\right)$$$ она перешла в клетку $$$\left(x+k,y\right)$$$ или $$$\left(x,y+k\right)$$$.

Фишка двигается по следующим правилам:

  • фишка передвигается либо вниз, либо вправо;
  • первым ходом фишка двигается на $$$2$$$ клетки;
  • после того, как фишка передвинулась на $$$2$$$ клетки, следующим ходом она должна будет передвинуться на $$$3$$$ клетки;
  • после того, как фишка передвинулась на $$$3$$$ клетки, следующим ходом она должна будет передвинуться уже на $$$5$$$ клеток;
  • после того, как фишка передвинулась на $$$5$$$ клеток, то следующим ходом она должна передвинуться на $$$2$$$ клетки.

Алиса и Зелибоба управляют фишкой по очереди. Алиса начинает игру. Если игрок в свой ход не может передвинуть фишку, то он проиграл. Для таблицы размером $$$n \times m$$$ определите победителя при условии, что оба игрока используют оптимальную стратегию.

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

В первой строке записано одно целое число $$$t$$$ $$$(1 \le t \le 5 \cdot 10^4)$$$ — количество наборов входных данных. Далее следуют $$$t$$$ наборов входных данных.

Каждый набор входных данных состоит из одной строки. Строка содержит два целых числа $$$n, m$$$ $$$(1 \le n, m \le 3 \cdot 10^4; n \cdot m \le 3 \cdot 10^4)$$$ — размеры таблицы соответственно.

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

Для каждого набора входных данных выведите «Alice», если Алиса выиграет игру, или «Bob», если выиграет Зелибоба, при условии использования обоими игроками оптимальной стратегии.

Пример
Входные данные
6
2 2
3 3
4 4
3 4
4 3
3 9
Выходные данные
Bob
Alice
Bob
Alice
Alice
Alice
Примечание

В первом тестовом примере Алиса не может сделать первый ход, так как из клетки $$$\left(1,1\right)$$$ она обязана ходить либо в $$$\left(1,3\right)$$$, либо в $$$\left(3,1\right)$$$, что не представляется возможным из-за того, что размеры доски равны $$$2 \times 2$$$.

Во втором тестовом примере Алиса может сделать первый ход, например, в $$$\left(1,3\right)$$$, переместив фишку на две клетки, после чего Говорун не может передвинуть фишку на $$$3$$$ клетки.

В третьем тестовом примере, если Алиса передвинет фишку в клетку $$$\left(1,3\right)$$$ или $$$\left(3,1\right)$$$, то Зелибоба, передвигая фишку в клетки $$$\left(4,3\right)$$$ и $$$\left(3,4\right)$$$ соответственно, добивается победы, так как Алиса не сможет сделать следующий ход.

H. Осознание десятого уровня
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Бендер «Сгибальщик» Родригез насмотрелся аниме, после чего решил приобщиться к японской культуре поплотнее. Для начала Бендер выбрал наиболее близкий ему род искусства  — «Оригами»: ведь тут всего лишь надо сгибать бумагу то туда, то сюда, он справится в два счёта.

Но, проведя дни за сгибанием и разгибанием листов бумаги, Бендер осознал всю глубину философии, лежащей за таким простым процессом. Теперь Бендер готов поделиться этим сакральным знанием с вами, не упустите свой шанс!(*)

Например, представьте перед собой прямоугольный лист бумаги... Представили? Мысленно согните его пополам справа-налево ровно посередине, затем пополам снизу-вверх, и, наконец, пополам слева-направо... Согнули? Кажется, что перед Вами все тот же прямоугольный лист бумаги, но он больше никогда не станет прежним... Развернув согнутый в несколько раз лист, Вы немедленно увидите следующую картину:

$$$\text{ }$$$

Полученную Вами следующей последовательностью сгибов:

$$$\text{ }$$$

$$$\text{ }$$$

$$$\text{ }$$$

Вы два раза согнули лист бумаги по вертикальной линии сгиба и один раз по горизонтальной линии сгиба, поэтому, получилась таблица из $$$6$$$ вертикальных сгибов и $$$4$$$ горизонтальных сгибов, направленных либо к Вам, обозначенных $$$U$$$ (от слова $$$\text{up}$$$), либо от Вас, обозначенных $$$D$$$ (от слова $$$\text{down}$$$).

Если Вы сделаете $$$m$$$ сгибов по вертикали и $$$n$$$ по горизонтали, то получится $$$2^n$$$ строк, в каждой из которых будет по $$$2^m-1$$$ вертикальных сгибов, и $$$2^m$$$ столбцов, в каждом из которых будет по $$$2^n-1$$$ горизонтальных сгибов.

Пронумеруем строки целыми числами от $$$1$$$ до $$$2^n$$$ сверху-вниз, а столбцы – целыми числами от $$$1$$$ до $$$2^m$$$ слева-направо. Вертикальные сгибы в каждой строке пронумеруем целыми числами от $$$1$$$ до $$$2^m-1$$$, а горизонтальные сгибы в каждой строке – целыми числами от $$$1$$$ до $$$2^n-1$$$. Сможете ли Вы для заданных сгибов сообщить, в какую сторону они направлены?

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

В первой строке даны два целых числа $$$n$$$ и $$$m$$$ $$$\left(0 \le n \le 29, 0 \le m \le 29\right)$$$  — суммарное количество операций сгиба вдоль горизонтальных и вертикальных линий, соответственно.

В следующих $$$n+m$$$ строках заданы сами операции сгиба прямоугольного листа в хронологическом порядке:

  • $$$\text{UD}$$$ или $$$\text{DU}$$$  — лист необходимо согнуть вдоль горизонтальной середины сверху-вниз или снизу-вверх, соответственно.
  • $$$\text{LR}$$$ или $$$\text{RL}$$$  — лист необходимо согнуть вдоль вертикальной середины слева-направо или справа-налево, соответственно.

Затем дано целое число $$$q$$$ $$$\left(1 \le q \le 10^4\right)$$$  — количество запросов.

В следующих $$$q$$$ строках приведены сами запросы по одному в каждой строке:

  • $$$v\text{ }r\text{ }i$$$ $$$\left(1 \le r \le 2^n, 1 \le i \le 2^m-1\right)$$$  — нужно сообщить, в какую сторону направлен вертикальный сгиб, находящийся в строке с номером $$$r$$$ и имеющий в ней номер $$$i$$$.
  • $$$h\text{ }c\text{ }j$$$ $$$\left(1 \le c \le 2^m, 1 \le j \le 2^n-1\right)$$$  — нужно сообщить, в какую сторону направлен горизонтальный сгиб, находящийся в столбце с номером $$$c$$$ и имеющий в этом столбце номер $$$j$$$.
Выходные данные

Ответьте на все запросы в том порядке, в котором они даны. Выведите ответы в виде одной строки из $$$q$$$ символов, каждый из которых либо $$$U$$$, либо $$$D$$$.

Примеры
Входные данные
1 2
RL
DU
LR
10
v 1 1
v 1 2
v 1 3
v 2 1
v 2 2
v 2 3
h 1 1
h 2 1
h 3 1
h 4 1
Выходные данные
DDUUDDDDUU
Входные данные
2 2
LR
UD
DU
RL
24
v 1 1
v 1 2
v 1 3
v 2 1
v 2 2
v 2 3
v 3 1
v 3 2
v 3 3
v 4 1
v 4 2
v 4 3
h 1 1
h 1 2
h 1 3
h 2 1
h 2 2
h 2 3
h 3 1
h 3 2
h 3 3
h 4 1
h 4 2
h 4 3
Выходные данные
UDDDDUUDDDDUDUUDUUUDDUDD
Примечание

$$$\textbf{Важная информация по языку Python}$$$: команда языка input() при чтении строк возвращает строку вместе с символом перевода строки на конце. Советуем использовать комбинацию input().strip() для чтения строк в данной задаче.

Пояснения к примерам:

Первый тестовый пример полностью соответствует рисунку из условия.

Второй тестовый пример:

(*) - услуга осознания тарифицируется посекундно, стоимость зависит от порядка сгибов и количества запросов, а так же взаимного расположения галактик «Млечный Путь» и «Туманность Андромеды».