Массивы(232 задач)
Типы данных(356 задач)
Циклы(177 задач)
Условный оператор (if)(164 задач)
Python(260 задач)
Standard Template Library(2 задач)
На кольце нанесена надпись, состоящая из заглавных английских букв и пробелов. Суммарное количество символов в надписи не превышает 180.
Надпись нанесена таким образом, что:
1. все буквы (даже пробелы) имеют одинаковую ширину (то есть дуги, соответствующие каждому символу одинаковы);
2. надпись охватывает все кольцо, между последним и первым символом нет пробела.
Юля смотрит на кольцо со стороны \(k\)-го символа от начала надписи (символы нумеруются с 1, слева направо).
Определите, какую часть надписи видит Юля.
Вывести следует только символы, видимые целиком.
Символ считается видимым, если угол между его дальней границей и линией взгляда составляет не более 60 градусов.
На первой строке вводится число \(k\) (натуральное, не превышает длины надписи). На второй строке - текст надписи (строка, не короче 3 и не длиннее 180 символов, состоящая из заглавных английских букв и пробелов.
Требуется вывести строку - часть надписи, которая будет видимой при данном положении кольца.
2 ABCD
B
Чтобы прославить свое имя в будущих поколениях, Его Величество Бубей Второй задумал грандиозную реформу календаря для своих подданных. К уже имеющимся в календаре \(X\) месяцам планируется добавить еще один, и назвать его по имени короля. Естественно, новый месяц Его Величество пожелал сделать первым, чтобы с его именем у подданных начинался новый год.
Естественно, такая реформа привела в ужас торговцев и производителей различных товаров, так как для удобства покупателей необходимо перемаркировать все товары новыми датами годности. Напишите программу, которая по дате в старом календаре будет вычислять дату в новом.
До реформы календарь был устроен таким образом: год состоял из \(N\) дней, которые были равномерно (то есть в каждом месяце одинаковое количество дней) разделены на \(X\) месяцев. По счастливой случайности при введении нового месяца также получается равномерное распределение дней (гарантируется в исходных данных).
В первой строке файла input.txt записано число \(N\) (целое, положительное, не превышает 30000) – количество дней в году, во второй строке записано число \(X\) – количество месяцев, которое было в календаре до королевской реформы (целое, положительное, не превышает \(N-1\)), в третьей строке записаны два числа – дата по старому календарю (номер дня и номер месяца).
В файл output.txt выведите номера дня и месяца, соответствующие указанной старой дате в новом календаре.
Комментарий к первому примеру: был год в 48 дней, то есть 2 месяца по 24 дня в каждом; 24 день 2-го месяца – это последний день такого года. Когда добавился один месяц – их стало 3, по 16 дней в каждом, то есть последний день года будет 16-м числом 3-го месяца.
48 2 24 2
16 3
48 3 15 1
3 2
Некоторый алгоритм шифрования устроен следующим образом.
Исходная строка разбивается на блоки по 36 символов. Если в конце остается часть, которой недостаточно для полного блока, то она не шифруется.
Шифрование происходит с помощью квадратного трафарета, в котором имеется 9 прорезей для записи символов.
Пример трафарета показан на рисунке.
Например, если в начале блока шло слово «Криптография», то его символы будут расположены вот так:
Символы из таблицы выписываются в порядке слева направо и сверху вниз - таким образом получается зашифрованный блок.
Затем трафарет возвращается в исходное положение и операция повторяется для остальных блоков.
Гарантируется, что трафарет корректен (то есть в процессе шифрования одного блока над каждой клеткой таблицы прорезь появляется ровно один раз).
Дана строка, состоящая из английских букв (заглавных и строчных) и пробелов. Также дан трафарет. Напишите программу шифрования данной строки по трафарету.
В первой строке находится исходный текст (одна непустая строка длинной не более 200 символов).
В следующих 6 строках описан трафарет в следующем формате: закрытая клетка обозначается символом ‘#’ (решетка), прорезь обозначается символом ‘.’ (точка).
Например, трафарет из условия задачи будет вводиться так:
.##### #..### ###.## .###.# ###### #..#.#
Выведите строку, полученную в результате шифрования исходного текста.
ABCDE .##### #..### ###.## .###.# ##### #..#.#
ABCDE
В супермаркете «На троечку» часто происходят распродажи товаров, срок годности которых подходит к концу. Каждый товар привозят в магазин в определенное время, а через некоторое его вывозят из магазина, в связи с окончанием срока годности. Более формально, каждый товар имеет стоимость c i , время его завоза в магазин a i и время его вывоза из магазина b i .
У Иннокентия есть хитрый план похода в магазин. Даже несколько. Каждый план похода в магазин выглядит так: Иннокентий выбирает какое-то время, когда он появится в магазине m j , время s j , которое он проведет в магазине среди огромных стеллажей товаров, и сумму денег k j , которую он рассчитывает потратить. Для каждого плана он хочет узнать, сможет ли он осуществить его, т. е. верно ли, что он сможет во время своего пребывания в магазине купить несколько товаров суммарной стоимостью ровно k j , при этом все выбранные товары должны быть в магазине на протяжении всего пребывания Иннокентия в магазине.
Помогите Иннокентию определить, какие из его планов можно выполнить.
В первой строке входных данных содержится число N — общее количество товаров в магазине ( 1 ≤ N ≤ 500 ). Далее содержатся описания товаров, каждый товар описывается тремя целыми числами c i , a i , b i , обозначающими стоимость товара, время его завоза и время его вывоза из магазина ( 1 ≤ c i ≤ 1 000 , 1 ≤ a i < b i ≤ 10 9 ).
Далее содержится число M — количество планов Иннокентия ( 1 ≤ M ≤ 500 000 ). Каждый план описывается тремя целыми числами m j , k j , s j , обозначающими время прихода Иннокентия в магазин, сумму денег, которую он готов потратить в этом плане и длительность его пребывания в магазине ( 1 ≤ m j ≤ 10 9 , 1 ≤ k j ≤ 100 000 , 0 ≤ s j ≤ 10 9 ).
Помните, что это только планы, т. е. ситуация в магазине не меняется вне зависимости от того, может ли Иннокентий осуществить план или нет.
Для каждого плана в отдельной строке выведите « YES », если Иннокентий может его осуществить, и « NO » в противном случае.
Тесты к этой задаче состоят из четырех групп.
Баллы за каждую группу тестов ставятся только при прохождении всех тестов группы.
5 6 2 7 5 4 9 1 2 4 2 5 8 1 3 9 5 2 7 1 2 7 2 3 2 0 5 7 2 4 1 5
YES NO YES YES NO
Вася не только играет в компьютерные и настольные игры, но и решает олимпиадные задачи по программированию. Три года назад он зарегистрировался на одном очень популярном сайте—KodeForces (KF) и с тех пор уже сдал целых 11 задач из архива! Вася не намерен останавливаться на достигнутом и планирует решить еще 1-2 задачи в ближайший месяц - полтора.
Однако сейчас его мозг занят совсем другой проблемой. Раз в год на KF случается чудо — любой пользователь сайта может изменить свой логин (имя пользователя). «Такую возможность упускать нельзя!», — подумал Вася и решил сделать свой логин лаконичным , т.е. состоящим из одинаковых букв.
Однако в этом году все не так то просто... Изменять логин можно только согласно следующему правилу: можно выбрать все одинаковые буквы имени и заменить их все на предыдущую или последующую букву в алфавитном порядке. Например, можно заменить все e на d или f . При этом, z можно заменить на a или y , а a на z или b .
Вася несколько ленив, поэтому, прежде чем начать изменение имени, он хочет посчитать минимальное количество применений описанного выше правила, позволяющее сделать логин лаконичным. Что если это число окажется слишком большим, и он потратит слишком много времени и пропустит очередной рейд в WoW-ке?
В первой и единственной строке находится исходный логин Васи—строка из маленьких латинских букв длиной не более 1000 символов.
Выведите единственное число—минимальное количество действий, за которое можно сделать логин Васи лаконичным.
В первом примере Вася может сначала заменить все буквы a на b , а затем буквы b на c . Т.е.aaac => bbbc => cccc.
Во втором примере Васе необходимо заменить все a на b , а затем изменить букву c на b . Т.е. bbaaaac => bbbbbbc => bbbbbbb.
aaac
2
bbaaaac
2