Летняя Олимпиадная Школа 2015 Олимпиада по информатике — разбор задач, Воскресенье, 26 июля 2015 года Problem A. Биология Input file: Output file: Time limit: Memory limit: standard input standard output 2 секунды 512 мебибайт Как известно, цепочка ДНК формируется из четырёх аминокислот, обозначаемых соответственно буквами ‘A’, ‘C’, ‘G’ и ‘T’. Таким образом, цепочку можно представить в виде строки, составленной из этих букв. Известно, что у всех марсианских видов цепочка ДНК состоит из чётного числа аминокислот и что у марсианских животных цепочка ДНК обладает следующим свойством: она читается слева направо так же, как и справа налево (то есть является палиндромом), при этом каждая из её половин также читается слева направо так же, как и справа налево. Не обладающие таким свойством цепочки принадлежат растениям. На практическом занятии по биологии на марсианской Летней олимпиадной школе дали задание — по заданной цепочке ДНК вымершего марсианского вида выяснить, принадлежит ли эта цепочка животному. Input Вход содержит цепочку ДНК — одну непустую строку, состоящую из символов ‘A’, ‘G’, ‘T’ и ‘C’. Гарантируется, что длина строки чётна и не превосходит 100. Output Если данная цепочка принадлежит марсианскому животному, выведите “YES”. Иначе выведите “NO”. Examples standard input AGTC AGAAGA ACCA standard output NO YES NO Page 1 of 6 Летняя Олимпиадная Школа 2015 Олимпиада по информатике — разбор задач, Воскресенье, 26 июля 2015 года Problem B. Олимпиада по математике Input file: Output file: Time limit: Memory limit: standard input standard output 2 seconds 512 mebibytes После проверки олимпиады по математике председателю жюри надо сообщить оценки (целые положительные числа от 1 до 100) в оргкомитет для печати сертификатов. Но, к сожалению, выключенный из соображений информационной безопасности интернет так и не включили, так что председателю пришлось диктовать оценки по телефону. С непривычки он время от времени делает ошибки, называя не то число. Для исправления ошибок председатель имеет возможность сказать «отмена», что обозначает, что последнее из названных, но ещё не отменённых чисел было названо неверно. Разумеется, слово «отмена» может быть сказано несколько раз подряд (но не больше, чем на тот момент было названо чисел). Для проверки того, что сообщение передано правильно, председатель жюри подсчитал сумму всех баллов и просит Вас, в порядке помощи оргкомитету, посчитать сумму всех баллов по продиктованной им последовательности чисел и команд отмены. Input В первой строке входа задано одно целое число k — суммарное количество действий — названных председателем оценок и команд отмены. (1 ≤ K ≤ 105 ). i-я из последующих k строк содержит одно целое неотрицательное число xi , не превосходящее 100. Если это число положительно, то i-м действием председатель продиктовал это число, если равно нулю, то i-м действием была команда отмены. Output Выведите одно целое число — сумму всех выставленных оценок. Example standard input 10 1 3 5 4 0 0 10 0 0 3 standard output 4 Page 2 of 6 Летняя Олимпиадная Школа 2015 Олимпиада по информатике — разбор задач, Воскресенье, 26 июля 2015 года Problem C. Неквадраты Input file: Output file: Time limit: Memory limit: standard input standard output 2 секунды 512 мебибайт Задано целое положительное число n. Выясните, может ли оно быть представлено в виде произведения k целых чисел, ни одно из которых не является квадратом целого числа. Input Первая строка ввода содержит целое число t (1 ≤ t ≤ 10) — количество тестовых случаев. Каждая из последующих t строк содержит один тестовый случай, состоящий из двух целых чисел n (1 ≤ n ≤ 1 000 000 000) и k (2 ≤ k ≤ 50). Output Для каждого тестового случая выведите в отдельной строке слово «YES» в том случае, если существует такой набор из k целых чисел ai , что n = a1 · a2 · · · ak и ни одно из ai не является квадратом целого числа, и слово «NO» в противном случае. Examples standard input 2 1 3 7 2 standard output NO YES Page 3 of 6 Летняя Олимпиадная Школа 2015 Олимпиада по информатике — разбор задач, Воскресенье, 26 июля 2015 года Problem D. Бесконечный процесс Input file: Output file: Time limit: Memory limit: standard input standard output 2 секунды 512 мебибайт Рассмотрим отрезок, на концах которого записаны единицы. Далее будем совершать следующую процедуру: для каждого отрезка, на концах которого записаны числа a и b и внутри которого отсутствуют числа, запишем строго в его середине число a + b и этой срединной точкой разобъем этот отрезок на два отрезка [a, a + b] и [a + b, b]. То есть из начального отрезка 1..1 мы получим 1..2..1, затем будут порождаться отрезки 1..3..2..3..1, 1..4..3..5..2..5..3..4..1 и так далее до бесконечности. Сколько раз на исходном отрезке будет записано натуральное число N ? Input Входной файл содержит одно целое число N (1 ≤ N ≤ 109 ). Output Выведите одно целое число — сколько раз будет в итоге записано натуральное число N . Example standard input 4 standard output 2 Page 4 of 6 Летняя Олимпиадная Школа 2015 Олимпиада по информатике — разбор задач, Воскресенье, 26 июля 2015 года Problem E. Двоичное умножение Input file: Output file: Time limit: Memory limit: standard input standard output 2 seconds 256 mebibytes Ещё со школы все мы помним правила умножения в столбик. Ваша задача — написать программу, которая умножает двоичные числа столбиком. Input Первая строка входа содержит одно целое число T — количество тестовых примеров (1 ≤ T ≤ 150). Каждая из последующих N строк содержит два целых числа в двоичном представлении без ведущих нулей. Длина каждого из чисел не превосходит 30 цифр. Output Для каждого тестового примера выведите строку с текстом “Test N”, где N — номер теста. После чего выведите запись умножения в соответствии с тестовым примером. В качестве разделителей между тестами используйте пустую строку. Examples standard input 4 11 11 111 10 10 111 1010 0 standard output Test 1 11 11 -11 11 ---1001 Test 2 111 10 --000 111 ---1110 Test 3 10 111 --10 10 10 ---1110 Test 4 1010 0 ---0000 ---0 Page 5 of 6 Летняя Олимпиадная Школа 2015 Олимпиада по информатике — разбор задач, Воскресенье, 26 июля 2015 года Problem F. Экспериментальная физика Input file: Output file: Time limit: Memory limit: standard input standard output 2 секунды 512 мебибайт Во время экспериментальных работ по механике участники марсианской Летней олимпиадной школы проводили опыты с идеальным бильярдом. Ваша задача — написать программу, проверяющую правильность полученных отчётов. На прямоугольном бильярдном столе в точке A находится единственный шар. По шару наносится удар таким образом, что шар до первого соударения со стенкой проходит через точку B. Требуется проверить, пройдёт ли шар, возможно, после некоторого количества соударений со стенками бильярда через точку C. Шар считать идеально упругим, линейными размерами шара и действием силы трения пренебречь. При попадании шара в угол его вектор движения меняет знак. Input Первая строка входного файла содержит два целых числа x1 и y1 — координаты правой верхней вершины стола (1 ≤ x1 , y1 ≤ 104 ). Левая нижняя вершина стола находится в начале координат. Вторая строка содержит два целых числа xa и ya (0 ≤ xa ≤ x1 , 0 ≤ ya ≤ y1 ) — координаты шара. Третья строка содержит два целых числа xb и yb (0 ≤ xb ≤ x1 , 0 ≤ yb ≤ y1 ) — координаты точки B. Четвёртая строка содержит два целых числа xc и yc (0 ≤ xc ≤ x1 , 0 ≤ yc ≤ y1 ) — координаты точки C. Никакие две из трёх точек A, B и C не совпадают. Output Выведите “YES”, если после некоторого (возможно, нулевого) количества соударений со стенками шар пройдёт через точку C и “NO” в противном случае. Example standard input 10 10 2 1 5 8 6 3 2 2 1 0 0 1 1 1 standard output YES NO Page 6 of 6