2016-2017 Командная олимпиада Казахстанского филиала МГУ (осенний тур)
A. A sad number
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Ввиду некоторых печальных событий, никак не связанных с учёбой в университете, Денис считает цифру 2 самой грустной цифрой. Соответственно натуральные числа, в десятичной записи которых есть цифра 2, Денис называет «грустными» числами; числам же, которые можно разложить на сумму двух «грустных» чисел, Денис дал название «очень грустные» числа. Поскольку определение вышло слишком сложным, помогите Денису определить, является ли данное число «очень грустным» или нет.

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

Одно целое число $$$n$$$, где $$$1 \le n \le 10^{18}$$$.

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

Слово YES, если введенное число является «очень грустным», и NO — иначе.

Примеры
Входные данные
10
Выходные данные
NO
Входные данные
14
Выходные данные
YES
Входные данные
3018
Выходные данные
YES
Примечание

Число 10 нельзя разложить на сумму двух грустных чисел. Число 14 = 12 + 2, здесь и 2, и 12 содержат двойку в своей записи. Число 3018 = 2016 + 1002 — оба слагаемых являются грустными числами.

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

Тимур считает, что все задачи по программированию можно решить перебором. Казалось бы, чего сложного, например, перебрать все возможные пары различных натуральных чисел $$$(a, b)$$$ не более некоторого $$$n$$$ и вывести максимальный НОД из полученных? Не правда ли?

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

Одно целое число $$$n$$$, где $$$2 \le n \le 10^{18}$$$.

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

Одно целое число — максимальный НОД чисел $$$a$$$ и $$$b$$$ при всех возможных, где $$$1 \le a \lt b \le n$$$.

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

Во втором примере все возможны НОДы равны: НОД(1, 2) = 1, НОД(1, 3) = 1, НОД(1, 4) = 1, НОД(1, 5) = 1, НОД(2, 3) = 1, НОД(2, 4) = 2, НОД(2, 5) = 1, НОД(3, 4) = 1, НОД(3, 5) = 1, НОД(4, 5) = 1. Максимальным из полученных чисел является 2.

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

Адиль хочет применить полученные знания на практике после окончания университета. Чтобы стать ближе к проектированию «умного дома», Адиль уже сейчас пытается написать что-то своё. Его первый проект — автоматическое управление шторами. Деталей разработки своего проекта Адиль не раскрывает, но на данный момент его у него имеется $$$N$$$ петелек для штор, которые крепятся к карнизу в точках $$$a_1$$$, $$$a_2$$$, ... , $$$a_N$$$ (координаты в см $$$1 \le a_1 \lt a_2 \lt \dots \lt a_N \le 10^5$$$). А его «умный дом» может выполнять запросы вида:

  1. сдвинуть k-ю петельку вправо или влево на 1 см;
  2. сдвинуть k-ю петельку вправо или влево на 1 см.
При этом совпадать петельки в процессе действий не могут — такие действия следует игнорировать. Проект ещё далёк от завершения, а Адилю нужно готовиться к сессии. Чтобы контролировать, насколько сильно провисают шторы, Адилю важно знать максимальное расстояние между соседними петельками после каждого запроса. Обратите внимание, что карниз можно считать бесконечным и координаты могут становится отрицательными в процессе перемещений.
Входные данные

В первой строке целое число $$$N$$$ — число штор, где $$$2 \le N \le 10^5$$$, во второй строке $$$N$$$ целых чисел $$$a_1, a_2, \dots, a_N$$$ — начальное положение штор, где $$$1 \le a_i \le 10^5$$$, в третьей строке целое число $$$Q$$$ — число запросов, где $$$1 \le Q \le 10^5$$$, в следующих $$$Q$$$ строках содержится описания запросов одного из двух видов: «R k» соответствует запросу типа «сдвинуть k-ую петельку вправо на 1 см»; «L k» соответствует запросу типа «сдвинуть k-ую петельку влево на 1 см».

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

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

Примеры
Входные данные
3
1 5 10
3
R 2
L 3
R 1
Выходные данные
5
5
4
Входные данные
2
1 2
3
R 1
L 2
R 2
Выходные данные
1
1
2

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

Димитрий отлично знает, как находить сумму членов арифметической прогрессии, поэтому на этот раз ему дали задачку сложнее. Необходимо найти сумму $$$a_0 + a_1 + a_2 + ... + a_n$$$, где $$$a_i$$$ отличается от $$$i$$$ только $$$k$$$-ым битом справа в своей двоичной записи. Если число содержит недостаточно двоичных цифр, следует добавить незначащие нули слева.

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

Два целых числа $$$n$$$ и $$$k$$$, где $$$0 \le n \le 10^9$$$ и $$$1 \le k \le 30$$$.

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

Одно целое число — ответ на задачу.

Примеры
Входные данные
7 3
Выходные данные
28
Входные данные
5 3
Выходные данные
23
Примечание

При $$$k = 3$$$ последовательность $$$\{a_n\}$$$ будет выглядеть следующим образом: 4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, ...

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

Ребята из команды Snowy Cube сейчас учатся на 3 курсе ВМК и проходят один из самых интересных предметов — "Машинная графика", где они программируют отрисовку трёхмерных изображений с помощью библиотеки OpenGL. Как и полагается, первой демонстрационной программой является отрисовка куба. Ребята так хотят научиться писать движки для трехмерных игр, что уже начали разрабатывать трехмерную игру «Экскурсия по снежному кубу». Изначально игровое пространство состоит из куба размера $$$A$$$, ребра которого параллельны осям координат. Суть игры заключается в том, чтобы добраться из угла куба $$$(0, 0, 0)$$$ в противоположный угол с координатами $$$(A, A, A)$$$. Двигаться можно только прыжками по снежинкам, расставленным внутри куба, при этом общая длина всех прыжков не должна превышать данного параметра $$$K$$$ (уровень сложности игры). Штраф в игре вычисляется как длина максимального прыжка, совершенного во время преодоления пути. Ясно, что игроки будут пытаться получить минимальный штраф. Чему будет равен абсолютный рекорд для данной карты?

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

В первой строке два целых числа $$$A$$$ и $$$K$$$ — размер куба и уровень сложности ($$$1 \le A \le 1000$$$, $$$1 \le K \le 4000$$$); во второй строке — число снежинок $$$N$$$ на данной карте ($$$0 \le N \le 100$$$); каждая из следующих $$$N$$$ строк содержит три целых числа $$$x_i$$$, $$$y_i$$$, $$$z_i$$$ — координаты $$$i$$$-ой снежинки ($$$0 \le x_i, y_i, z_i \le A$$$).

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

Одно вещественное число — минимальный штраф $$$L$$$ (с точностью в 2 знака после запятой), с которым можно пройти данную карту. Если эту карту на данном уровне сложности пройти невозможно, то вывести $$$-1$$$.

Примеры
Входные данные
10 20
5
5 0 0
10 0 0
10 5 0
10 10 0
10 10 5
Выходные данные
17.320
Входные данные
10 30
5
5 0 0
10 0 0
10 5 0
10 10 0
10 10 5
Выходные данные
7.071
Входные данные
10 40
5
5 0 0
10 0 0
10 5 0
10 10 0
10 10 5
Выходные данные
5.000
Входные данные
10 16
2
6 2 1
4 0 6
Выходные данные
-1

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

Знаете ли вы, где можно вкусно перекусить рядом с филиалом МГУ? В соседнем с нашим архитектурно–строительном корпусе работает замечательная столовая с оригинальным названием The Stolovka. От нашего корпуса до корпуса, в котором находится The Stolovka, можно пройти по одной из двух параллельных аллей, соединённых между собой некоторой системой из попарно не пересекающихся переулков. Ерулан, как большой любитель покушать, собрался посетить данное место. Но, кроме прочего, он еще и большой любитель математики, поэтому он решил воспользоваться случаем и на основе этого маленького приключения составить задачу.

Ерулан записал её условие в следующем формальном виде: две аллеи — горизонтальные отрезки. Выходит он из верхнего левого угла, прийти должен в правый нижний. Переулки между аллеями бывают 2 видов: / и \. Ерулан всегда движется слева направо. На каждом шаге он может либо продолжить движение по той же аллее, либо перейти по переулку на другую, если есть такая возможность. Посчитайте количество способов попасть в столовую.

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

Одно целое число $$$N$$$, где $$$1 \le N \le 10000$$$. На следующей строке строка длины $$$N$$$ из символов вида '/' и '\'.

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

Одно целое число — ответ по модулю $$$10^9+7$$$.

Примеры
Входные данные
5
\\\/\
Выходные данные
7
Входные данные
2
//
Выходные данные
0
Примечание

Обратите внимание, что в языке $$$C$$$ и $$$C$$$++ константы прямого и обратного слеша обозначаются как '/' и '\\'.

G. Great and Mighty
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Илья учится уже на 4 курсе, но всё ещё отлично помнит что, студенты ВМК за первые три семестра знакомятся с тремя не самыми популярными, но одними из самых важных для понимания основ, языками программирования: pascal, nasm и C. Правда, эта информация никак не помогла ему во время сдачи уравнений математической физики, и навряд ли поможет вам.

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

Одно целое число от 1 до 10.

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

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

Темирхан очень обрадовался не столько победе на личной олимпиаде в прошлом году (которая проводится традиционно в декабре в филиале МГУ), сколько подарку в виде сборной модели здания МГУ. Он увлекся различным конструированием, и в частности, задумался о сборке железной дороги. Для этого Темирхан купил себе большую пачку деталей двух видов: прямой прогон (длины 2) или поворот на 90 (ширина 1, высота 1).

После того, как он принес $$$A$$$ деталей первого вида и $$$B$$$ деталей второго вида, у него моментально возник вопрос: можно ли составить замкнутую железную дорогу, используя все детали? Помогите ему ответить на этот странный вопрос.

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

Два целых числа $$$A$$$ и $$$B$$$, где $$$0 \le A \lt 2^{63}$$$, $$$0 \le B \lt 2^{63}$$$ и $$$A + B \gt 0$$$.

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

Слово YES, если собрать дорогу возможно, и NO — иначе.

Примеры
Входные данные
0 4
Выходные данные
YES
Входные данные
0 8
Выходные данные
NO
Входные данные
3 3
Выходные данные
NO
Примечание

Дорога не может перекрываться, поэтому 8 уголков не подходят.

I. IMC problem
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Надира и Саша этим летом участвовали в IMC — международной студенческой олимпиаде по математике в Болгарии. На тренировках они решили огромное количество различных задач, в том числе и по теории чисел. Иногда попадались задачи, которые проще запрограммировать, чем решить честно. Например, как вам такая задача: найти $$$n$$$-ое число вида $$$2^p \cdot 5^q$$$, то есть, $$$n$$$-ое число последовательности 1, 2, 4, 5, 8, 10, 16, 20, 25, ...

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

Одно положительное целое число $$$n$$$ такое, что ответ гарантированно не превосходит $$$10^{18}$$$.

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

Одно целое число — $$$n$$$-ое число последовательности.

Примеры
Входные данные
8
Выходные данные
20
Входные данные
100
Выходные данные
1000000
Входные данные
500
Выходные данные
100000000000000

J. Join the knowledge
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Куат изучает очень много математики. За первые два семестра он прослушал курсы «Алгебра», «Аналитическая геометрия», «Линейная алгебра» и «Математический анализ». Знания по всем этим предметам занимают большую часть его памяти. Свою память он представляет в виде таблицы $$$n \times n$$$. Если клетка памяти занята знаниями, то в таблице это отмечено точкой. Если она еще свободна — звездочкой. Будучи настоящим математиком, Куат верит, что все предметы и знания по ним должны быть связаны друг с другом (две единицы знаний считаются соседними, если они имеют общую сторону; все единицы считаются связанными между собой, если для любых двух единиц знания $$$A$$$ и $$$B$$$ можно составить цепочку $$$A = v_1 \rightarrow v_2 \rightarrow \dots \rightarrow v_k = B$$$, где $$$v_i$$$ и $$$v_{i+1}$$$ — соседние клетки для любого $$$i$$$). Куат очень надеется, что его знания связаны друг с другом. А если нет, то он готов потратить еще один вечер и заполнить знаниям еще один кусок памяти, чтобы они стали связаны. Гарантируется, что у Куата уже есть как минимум две единицы знаний. Сможет ли он добиться того, чтобы все его знания стали связаны после добавления одной единицы знаний?

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

В первой строке одно целое число $$$n$$$, где $$$2 \le N \le 300$$$, — размер матрицы знаний. На следующих $$$n$$$ строках описание таблицы знаний $$$n \times n$$$ из символов * (звездочка) и . (точка).

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

Слово YES, если Куат может добиться связности знаний, заменив не более одной звездочки на точку, и NO — иначе.

Примеры
Входные данные
3
***
.*.
.*.
Выходные данные
YES
Входные данные
3
*.*
.*.
*.*
Выходные данные
YES
Входные данные
3
.*.
*.*
.*.
Выходные данные
NO

K. Keg and dipper
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В Казахстанском филиале МГУ с недавнего времени появилась традиция пить чай на тренировках по программированию. Команда Big dipper сразу начала навязывать свои привычки: всё мерить в ковшах, а чай пить только из бесконечно большого бочонка. Ещё ребята определили комфортную температуру чая, при которой его можно пить: от $$$A$$$ до $$$B$$$ градусов включительно. Кипяток из чайника имеет температуру $$$H$$$, молоко — температуру $$$C$$$. Количество молока и кипятка не ограничено. Помогите им выяснить, какое минимальное количество мерительных ковшей необходимо налить в бочонок, чтобы получить в нём чай комфортной температуры?

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

В первой строке два целых числа $$$A$$$ и $$$B$$$. Во второй строке два целых числа $$$C$$$ и $$$H$$$, где $$$0 \le C \lt A \lt B \lt H \le 10^6$$$.

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

Одно целое число — минимальное число ковшей, при котором можно получить комфортную температуру чая.

Примеры
Входные данные
36 37
25 95
Выходные данные
6
Входные данные
23 24
20 30
Выходные данные
3
Примечание

Температура чая, получаемой при смешивании $$$x$$$ ковшей кипятка и $$$y$$$ ковшей молока, равна $$$T = \frac{x \cdot H + y \cdot C}{x + y}$$$. В первом примере, если взять 5 ковшей кипятка и 1 ковш молока, то получим температуру $$$36 \frac23$$$ , которая является комфортной. В втором примере, если взять 2 ковша кипятка и 1 ковш молока, то получим температуру $$$23 \frac13$$$, которая является комфортной.

L. Lazy programming
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

На механико-математическом факультете филиала МГУ студенты 1 курса проходят замечательные предметы «Элементы теории чисел» и «Технология программирования на ЭВМ». Айтмухаммед и Павел в ответ на «ленивые математические вычисления», про которые услышали на программировании, решили изобрести метод «ленивого программирования» для задач по теории чисел. На такой шаг они пошли с целью не увеличивать всемирную энтропию работающих компьютеров, на которых написаны «решения в лоб», выполняющие много лишних циклов. Для этого они выводят формулу для решения задачи на бумаге так, чтобы в программе не было циклов вообще. Вот задача, которую они выбрали в качестве первого претендента:

проверить, является ли чётным число $$$\tau(1) + \tau(2) + \tau(3) + ... + \tau(n)$$$, где $$$\tau(k)$$$ — количество натуральных делителей числа k.

Попробуйте написать эту программу и Вы.

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

Одно целое число $$$n$$$, где $$$1 \le n \le 10^{18}$$$

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

Слово YES, если результат вычислений будет четным и NO — иначе.

Примеры
Входные данные
5
Выходные данные
YES
Входные данные
10
Выходные данные
NO