Темы --> Информатика --> Язык программирования
    Процедуры и функции(96 задач)
    Массивы(232 задач)
    Типы данных(356 задач)
    Циклы(177 задач)
    Условный оператор (if)(164 задач)
    Python(260 задач)
    Standard Template Library(2 задач)
---> 952 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 179 180 181 182 183 184 185 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

В игре «Гекс» используется доска в виде ромба, размера \(N\) строк по \(N\) шестиугольников (\(N\) целое, положительное, не более 20). На рисунке показано поле при \(N=5\). В игре принимают участие двое: первый игрок ходит белыми, второй – черными. За один ход можно поставить одну фишку в любой незанятый шестиугольник. Цель «белых» - соединить верхнюю и нижнюю сторону доски путем из белых фишек (двигаться можно только через сторону шестиугольника). Цель «черных» – соединить правую и левую стороны доски путем из черных фишек. Напишите программу, которая по заданной позиции определяет победили в ней белые или нет.

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

В первой строке файла input.txt записано число \(N\). В следующих \(N\) строках записано по одной строке, длиной \(N\) символов каждая. Символ ‘W’ (white) означает, что соответствующая клетка занята белой фишкой, символ ‘B’ (black) – черной, символ ‘E’ (empty) – клетка пуста.

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

В файл output.txt вывести слово YES, если белые выиграли (существует путь, соединяющий верхнюю и нижнюю строки) и слово NO в противном случае.

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

Комментарий ко второму примеру:

Комментарий к третьему примеру:

Примеры
Входные данные
2
EE
WW
Выходные данные
NO
Входные данные
4
EWEE
EWEE
EWEE
BWBB
Выходные данные
YES
Входные данные
4
EEWW
BWBE
WBEB
EEEE
Выходные данные
NO
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Для привлечения денег в казну министр финансов Его Величества Бубея Второго решил проводить ежемесячную лотерею. Лотерейный билет представляет собой таблицу \(5 \times 5\) клеток. В каждой клетке записана одна буква (напомним, что в Королевстве используются только заглавные английские буквы). Билет считается выигрышным, если на нем можно прочесть сумму (записанную прописью). Начинать чтение можно с любой клетки, перемещаясь только через стороны клеток. Возвращаться в уже прочитанную клетку – нельзя. На рисунке показан выигрышный билет на 50 монет – fifty.

Однако закон требует, чтобы не менее определенного процента билетов были выигрышными. Чтобы это гарантировать, в типографии по выпуску билетов используется компьютер.

Напишите программу, определяющую можно ли в данной таблице прочесть заданное слово.

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

В первой строке файла input.txt записано слово, состоящее из заглавных английских букв, длина слова не превышает 25 символов. В следующих 5 строках записано по 5 заглавных английских букв.

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

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

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

В первом примере:

Примеры
Входные данные
THOUSAND
OBUWS
HLOMO
LUSAP
AOHND
ZVTNX
Выходные данные
YES
Входные данные
MILLION
OBUWS
HLIMO
LUSAP
AOHND
ZVTNX
Выходные данные
NO
ограничение по времени на тест
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

Страница: << 179 180 181 182 183 184 185 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест