Темы --> Информатика
    Язык программирования(952 задач)
    Алгоритмы(1657 задач)
    Структуры данных(279 задач)
    Интерактивные задачи(17 задач)
    Другое(54 задач)
---> 2656 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 495 496 497 498 499 500 501 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Преподаватель: ...- И впишем в сферу икосаэдр...
Студенты: - Чего, чего???
Преподаватель: - Специально для AD&D-шников -
и впишем в сферу D20...


Во многих ролевых играх применяется такой формат описания случайных чисел: \(XdY+Z\). Это означает, что для получения такого случайного числа необходимо подбросить \(X\) игральных костей, по \(Y\) граней на каждой и к результату прибавить фиксированное число \(Z\).

Пример: \(2d6+4\) означает что для получения случайного числа надо взять \(6\)-гранные игральные кости в количестве \(2\) штук и к результату броска прибавить \(4\).

Напишите программу, которая по заданной записи формата \(XdY+Z\) определяет минимальное и максимальное число, которое можно получить по такому правилу.

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

В файле input.txt записано число \(X\) (целое, положительное, не превышает 1000), затем без пробела следует символ ‘d’, за которым также без пробела записано число \(Y\) (целое, положительное, не превышает 1000), затем также без пробела следует один из знаков ‘+’ или ‘-’, после этого знака также без пробела указывается число \(Z\) (целое, неотрицательное, не превышает 1000).

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

В файл output.txt выведите два числа – минимальный и максимальный результат, который можно получить при описанном броске.

Пояснение к примеру

Комментарий к первому примеру: минимальное число, которое выпадает на 6-гранном кубике равно 1, прибавляя к нему 9 получим минимально возможный результат; максимальное число, которое может выпасть равно 6, прибавим к нему 9 и получим максимальный результат броска

Примеры
Входные данные
1d6+9
Выходные данные
10 15
Входные данные
1d20-10
Выходные данные
-9 10
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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


Для поднятия престижа Короны среди граждан Королевства, Его Величеству Бубею Второму понадобилась небольшая победоносная война. В качестве цели был выбран маленький приграничный город. Королевским шпионам было дано задание узнать численность войск, находящихся в городе. Так как ежедневно пересчитывать всех солдат в целом городе очень сложно, то было решено что такой подсчет будет сделан только один раз. Затем шпионы будут только наблюдать за прибывающими или убывающими из города частями (уже не с точностью до одного человека, а с точностью до войсковой единицы: взвод, рота, полк) и ежедневно докладывать в Столицу.

Однако не все войсковые единицы противника могут состоять из одинакового числа солдат. Поэтому для каждой такой единицы в Военном Министерстве введены специальные поправки.

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

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

В первой строке файла input.txt записано начальное количество солдат (целое, положительное, не превышает 3000). Во второй строке записано число P (целое, положительное, не более 10) – количество названий разных войсковых единиц в армии потенциального противника. Следующие P строк имеют такой формат: <название войсковой единицы><численность><поправка>. Название войсковой единицы – строка, содержащая только заглавные буквы английского алфавита длины не более 10 символов. Численность – целое положительное число не более 10000, поправка – целое положительное число не более 100.

Пример такой строки:

BRIGADE 2000 50 – это означает что в войсковой единице BRIGADE может быть от 1950 до 2050 солдат (поправка действует в обе стороны).

В следующих строках файла указаны данные из донесений шпионов по одному донесению в строке. Формат донесения <знак><название войсковой единицы>, где знак ‘+’ означает что единица вошла в город, ‘-’ – что единица покинула город. Гарантируется, что количество солдат в городе в любой момент времени не превышает \(10^6\).

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

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

В файл output.txt выведите единственное число – максимально возможную численность солдат в городе.

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

Комментарий к первому примеру: было 500 солдат, затем в город вошла BRIGADE численностью от 900 до 1100 (максимально 1100, поэтому прибавляем это число), затем вошла ARMY численностью от 2500 до 3500, а в конце BATTALION (от 450 до 550 человек).

Комментарий ко второму примеру: было 500 солдат, затем BATTALION (от 450 до 550) покинул город. В городе осталось от 0 до 50 солдат, берем максимальное по условию. Затем в город вошло от 450 до 550 солдат).

Примеры
Входные данные
500
3
BATTALION 500 50
BRIGADE 1000 100
ARMY 3000 500
+BRIGADE
+ARMY
+BATTALION
Выходные данные
5650
Входные данные
500
1
BATTALION 500 50
-BATTALION
+BATTALION
Выходные данные
600
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

«Все пять разрядов шпионов работают, и
нельзя знать их путей. Это называется
непостижимой тайной. Они — сокровище для
государя» (Сунь Цзы, «Искусство войны»)

Для тайной переписки с агентами в других королевствах министры Его Величества Бубея Второго изобрели хитрое шифровальное устройство, которое представляет собой два диска, насаженных на одну ось. Каждый диск имеет 27 делений, подписанных заглавными буквами английского алфавита и пробелом.

В качестве государственного в Королевстве принят английский алфавит, причем для упрощения системы образования все знаки препинания (а также прочие специальные символы, за исключением пробелов) отменены, а буквы оставлены только заглавные.

На обоих дисках (большом и маленьком) буквы расположены в алфавитном порядке по часовой стрелке. Пробел расположен между буквами ‘A’ и ‘Z’. Маленький диск является подвижным и может поворачиваться вокруг своего центра. Шифрование сообщения происходит следующим образом: сначала выбирается начальное положение маленького диска (напротив какой буквы большого диска будет располагаться буква ‘A’ маленького). Затем определяется величина смещения N (целое, по модулю не превышает 26). Если N положительно, то во время шифрования диск будут вращать по часовой стрелке, если отрицательно, то против часовой стрелки на N делений.

Берется первый символ шифруемого текста и находится на маленьком диске. В шифровку записывается символ с большого диска, который сейчас расположен напротив данного. После этого маленький диск поворачивают и повторяют операцию для второго символа. Затем диск вновь поворачивают и так далее, пока сообщение не закончится.

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

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

В первой строке файла input.txt записан символ, напротив которого находится буква ‘A’ маленького диска при начале шифрования. Во второй строке записано число \(N\), в третьей – исходное сообщение.

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

В файл output.txt выведите зашифрованное сообщение.

Примеры
Входные данные
A
1
AAAA
Выходные данные
ABCD
Входные данные
B
-1
AAAA
Выходные данные
BA Z
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

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

Надпись нанесена таким образом, что:

1. все буквы (даже пробелы) имеют одинаковую ширину (то есть дуги, соответствующие каждому символу одинаковы);

2. надпись охватывает все кольцо, между последним и первым символом нет пробела.

Юля смотрит на кольцо со стороны \(k\)-го символа от начала надписи (символы нумеруются с 1, слева направо).

Определите, какую часть надписи видит Юля.

Вывести следует только символы, видимые целиком.

Символ считается видимым, если угол между его дальней границей и линией взгляда составляет не более 60 градусов.

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

На первой строке вводится число \(k\) (натуральное, не превышает длины надписи). На второй строке - текст надписи (строка, не короче 3 и не длиннее 180 символов, состоящая из заглавных английских букв и пробелов.

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

Требуется вывести строку - часть надписи, которая будет видимой при данном положении кольца.

Примеры
Входные данные
2
ABCD
Выходные данные
B
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Чтобы прославить свое имя в будущих поколениях, Его Величество Бубей Второй задумал грандиозную реформу календаря для своих подданных. К уже имеющимся в календаре \(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

Страница: << 495 496 497 498 499 500 501 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест