Подразделы

Другие разделы

Дата и время

18/04/2024 17:43:01

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printЗадачи очного тура личного первенства Южного Урала 2008

A. Расчет штрафов

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Фирма "Advanced Chamber Management" сдает в аренду офисные помещения в комплексе зданий. В начале каждого месяца фирма отправляет всем своим арендаторам счета, которые они должны оплатить до конца месяца. Если арендатор не оплачивает вовремя счет, с него берется штраф – `1/1000` от неуплаченной суммы за каждый день опоздания. Например, если счет за январь был оплачен 10 февраля, то штраф составит 2.50$ при арендной плате 250$. Штраф начисляется только на просроченную сумму арендной платы, без штрафов.
Напишите программу, которая по сумме арендной платы и списку поступивших платежей вычисляет суммарный штраф за 2008 год, который должен оплатить арендатор.
Первая строка ввода содержит два целых числа `S` и `N`, разделенных пробелом – ежемесячная аредная плата `S` (`1\ ≤\ S\ ≤\ 10000`) и количество платежей `N` (`0\ ≤\ N\ ≤\ 100`). Далее следует `N` строк, содержащих по 3 целых числа – день (от 1 до до 31), месяц (от 1 до 12) и сумма платежа (от 1 до 100000). Платежи указаны в хронологическом порядке. Номер дня не превышает количества дней в соответствующем месяце. В 2008 году в феврале было 29 дней! Арендаторы могут платить за несколько месяцев вперед или разбивать оплату на несколько платежей.
Вывести одно число – сумму штрафа с 3 знаками после запятой.

Пример ввода 1

1000 3
30 1 5000
2 11 4500
2 11 500

Пример вывода 1

348.000

Пример ввода 2

10 1
31 1 110

Пример вывода 2

0.000
Пояснение: арендатор оплатил за 11 месяцев вперед, а штраф за задержку оплаты счета за декабрь 2008 года войдет в сумму штрафов 2009 года.

B. Лексикографический порядок

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Список всех чисел от 0 до `999\ 999\ 999` был упорядочен по названиям чисел в английском языке. В результате получился следующий список: `8`, `800`, `808`, `808\ 000\ 000`, …, `0`.
Требуется для заданного числа `N` определить следующее за ним в этом упорядоченном списке.
Названия числительных в английском языке: zero, one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty, thirty, forty, fifty, sixty, seventy, eighty, ninety, hundred, thousand, million. Со словом hundred может быть связано только числительное от 1 до 9, т.е. 2500 записывается как "two thousand five hundred", а не "twenty five hundred". Перед словами hundred, thousand, million должно быть указано какое-то числительное, т.е. нужно писать "one million", а не просто "million".
Ввод содержит несколько строк, каждая из которых содержит одно целое число в диапазоне от 1 до `999\ 999\ 999`. Признаком конца ввода служит строка, содержащая число 0.
Для каждого введенного числа (кроме 0) вывести на отдельной строке одно целое число, которое следует за ним в списке лексикографически упорядоченных по названиям чисел.

Пример ввода

8
808
0

Пример вывода

800
808000000

C. Квадратные корни

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Для заданного числа `N` необходимо найти количество различных пар натуральных чисел `(X,Y)`, таких что `sqrt(X)\ +\ sqrt(Y)\ =\ sqrt(N)` и `X\ ≤\ Y`. Например, для числа 72 таких пар три: (2,50), (8,32) и (18,18).
Ввод содержит одно целое число `N` (`1\ ≤\ N\ ≤\ 2*10^9`).
Вывести одно целое число – количество пар.

Пример ввода

72

Пример вывода

3

D. Пирамиды майя

Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Чтобы сделать ровную площадку для строительства пирамиды в горном районе, майя используют дезинтегратор, полученный от инопланетян. Заряд дезинтегратора расходуется прямо пропорционально объему уничтожаемого вещества. У майя нет термоядерной электростанции для подзарядки дезинтегратора, поэтому майя хотят выбрать такое место для строительства, которое потребует уничтожения минимального объема неровностей рельефа.
Лучшие геодезисты майя разбили горный район на единичные квадраты и определили высоту скал в каждом квадрате (скалы в этом районе имеют форму прямоугольного параллелепипеда с основанием 1x1). Стороны площадки для строительства должны совпадать с линиями разделения местности на квадраты. Все неровности на выбранной площадке будут уничтожены таким образом, чтобы все квадраты площадки располагались на одинаковой высоте, не обязательно равной нулю.
Напишите программу, которая вычислит наилучшее место для строительства пирамиды, используя информацию, полученную от геодезистов.
Первая строка ввода содержит два целых числа `N` и `M` (`1\ ≤\ M\ <\ N\ ≤\ 500`) – размер стороны горного района, имеющего квадратную форму, и размер квадратной площадки для строительства пирамиды. Далее следует `N` строк, содержащих по `N` целых чисел в диапазоне от 0 до 1000, разделенных пробелами – карта высот местности.
Вывести два целых числа – координаты верхнего левого угла площадки, уничтожение неровностей на которой потребует минимального расхода заряда. Левый верхний угол местности имеет координаты `(0,0)`, левый нижний – `(0,N)`. Если существует несколько оптимальных вариантов, можно вывести любой из них.

Пример ввода

4 2
0 9 2 6
7 5 4 8
1 4 5 3
8 3 2 9

Пример вывода

1 1

E. Форматирование программы

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Регистр букв в программе на языке Паскаль не имеет значения, но для лучшего выделения структуры программы рекомендуется писать все резервированные слова (AND, ARRAY, BEGIN, CASE, CONST, DIV, DO, DOWNTO, ELSE, END, FILE, FOR, FUNCTION, GOTO, IF, IN, LABEL, MOD, NIL, NOT, OF, OR, PACKED, PROCEDURE, PROGRAM, RECORD, REPEAT, SET, THEN, TO, TYPE, UNTIL, VAR, WHILE, WITH) прописными буквами, а остальные идентификаторы, включая имена встроенных типов и функций, – строчными буквами.
Напишите программу, которая изменяет регистр букв в программе на языке Паскаль в соответствии с этой рекомендацией, оставляя без изменений регистр в комментариях, которые записываются в {}, и в строковых константах, которые записываются в ''.
Ввод содержит синтаксически правильную программу на языке Паскаль. Количество строк не превышает 100. Длина строк не превышает 80 символов. Длина идентификаторов не превышает 20 символов.
Вывод содержит программу с изменением регистра букв резервированных слов и идентификаторов, остальные символы копируются из ввода без изменений.

Пример ввода

{ My first program }
Program Hello;
BeGiN
   WRITELN('Hello, world!');
end.

Пример вывода

{ My first program }
PROGRAM hello;
BEGIN
   writeln('Hello, world!');
END.
Примечание: резервированные слова языка Паскаль в этой задаче ограничены набором из стандарта ISO 7185, не рассматривайте никаких дополнительных. Также не рассматривайте другие виды записи комментариев. Определение понятия идентификатора полностью совпадает в языках Pascal и C/C++ и намеренно не приводится в тексте задачи, так как является базовым в программировании.

F. Масштабирование изображения

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

На новостном сайте каждая новость может сопровождаться изображением не более некоторых заданных размеров. Необходимо выполнить масштабирование изображения, полученного вместе с новостным материалом, таким образом, чтобы размер его был максимально возможным, но не превышал заданные ограничения. Изображение нельзя обрезать, поворачивать или изменять пропорции.
Напишите программу, которая вычисляет коэффициент для масштабирования полученного изображения перед размещением его на сайте.
Ввод содержит четыре целых числа, разделенных пробелами – ограничения на размеры изображения на сайте `H`, `W` (`1<\ H,\ W\ ≤\ 256`) и размеры полученного изображения `h`, `w` (`1<\ h,\ w\ ≤1024`).
Вывод должен содержать одно число – коэффициент для масштабирования изображения в процентах с точностью `10^{-2}`.

Пример ввода

100 100 200 50

Пример вывода

50.00

G. Разрезание доски

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Клетки доски размером `N\ times\ M` покрашены в черный и белый цвета случайным образом. Необходимо определить, можно ли ее разрезать по клеткам на прямоугольники из двух клеток, имеющих разные цвета.
Первая строка ввода содержит два целых числа `N` и `M` (`1\ ≤\ N,\ M\ ≤\ 10`). Далее следует `N` строк, содержащих по `M` символов. Символ '.' означает клетку белого цвета на доске, а символ '#' – черного.
Выведите сообщение "Yes", разрезание можно выполнить, затем любой из способов разрезания, как `N` строк по `M` букв. Для обозначения разных частей доски, получаемых при разрезании, нужно использовать разные буквы от 'A' до 'Z' и от 'a' до 'z'. Если доску разрезать нельзя, выведите только сообщение "No".

Пример ввода 1

2 3
##.
.#.

Пример вывода 1

Yes
ABB
ACC

Пример ввода 2

2 3
##.
#..

Пример вывода 2

No

H. Пермутация выражений

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Для арифметического выражения, содержащего только односимвольные имена переменных (строчные латинские буквы от a до z), знаки операций +, * и скобки (), определите количество различных способов его записи без раскрытия скобок, используя свойство коммутативности операций сложения и умножения. Например, выражение a+(b+c)+a можно записать также как a+(c+b)+a, a+a+(b+c), a+a+(c+b), (b+c)+a+a и (c+b)+a+a. Для выражения (a*a)+a*a существует еще один способ записи в виде a*a+(a*a), так как скобки в выражении должны сохраняться.
Ввод содержит синтаксически правильное арифметическое выражение длиной не более 100 символов.
Выведите одно целое число – количество различных способов записать это выражение.

Пример ввода

a+(b+c)+a

Пример вывода

6
loading