Страница:
<< 1 2 3
4 >> [Всего задач: 20]
(Счастливые билеты; предлагалась на Всесоюзной олимпиаде
по программированию 1989 года.) Последовательность из
2
n цифр (каждая цифра от 0 до 9) называется
счастливым билетом, если сумма первых
n цифр равна сумме
последних
n цифр. Найти число счастливых
последовательностей данной длины.
[Ну и имечко!
]
|
|
Сложность: 4 |
В семье программистов родился ребенок. Папа-программист хочет назвать
ребенка так, чтобы его имя подходило под шаблон P, а мама-программист
настаивает на шаблоне M. Найдите самое короткое имя, удовлетворяющее
обоим шаблонам, или сообщите, что такого имени не существует и семья
находится на грани развода.
Шаблон представляет собой последовательность букв русского алфавита
(буква «ё» не используется) и специальных символов, которые имеют
следующие значения:
|
? |
любая буква |
|
* |
любое (возможно нулевое) число букв |
|
[P] |
любая буква из диапазона P |
|
[!P] |
любая буква не из диапазона P |
|
{n} |
предыдущий символ, повторенный ровно n раз |
|
{n;} |
предыдущий символ, повторенный не менее n раз |
|
{n;m} |
предыдущий символ, повторенный от n до m раз |
|
@ |
предыдущий символ, повторенный не менее одного раза |
При этом 0 ≤ n ≤ m ≤ 10. Диапазон задается перечислением через запятуюсимволов и интервалов символов. Интервал символов записывается в виде a-b,
что означает любую букву, расположенную в алфавите между a и b
включительно.
Символы могут комбинироваться. Например, запись [а,о,е,у,и,ы,э-я]@ означает произвольную непустую последовательность гласных
(необязательно повторяющихся). Запрещается записывать подряд фигурные
скобки и символы @.
Входные данные
В первой строке входного файла записан шаблон папы, а во второй – шаблон
мамы. Длина каждого шаблона не превосходит 80 символов.
Выходные данные
Выведите в выходной файла кратчайшее имя ребенка, удовлетворяющее обоим
шаблонам, если такое имя существует. Имя ребенка должно состоять из букв
русского алфавита. Большие и маленькие буквы не различаются. В случае
нескольких возможных имен требуется вывести первое по алфавиту. Если
искомого имени не существует, выведите сообщение «NO SOLUTION».
Пример входного файла
?ик*т[а-о][л-р]*
В??тор*
Пример выходного файла
Виктор
[Жадный калькулятор
]
|
|
Сложность: 4 |
Задано алгебраическое выражение, составленное из неотрицательных вещественных чисел и знаков операций +, - и ?. Требуется так расставить в этом
выражении скобки, чтобы его значение стало максимально возможным.
Входные данные
Исходное выражение длиной не более 250 символов записано в первой строке
входного файла. Выражение содержит не более 50 чисел, каждое из которых
лежит в диапазоне от 0 до 10
6
. Пробелы внутри чисел не допускаются.
Выходные данные
Выведите в первую строку выходного файла максимально возможное после
расстановки скобок значение выражения, а во вторую строку – само это
выражение (если вариантов несколько, нужно выдать любой из них).
Пример входного файла
1+2 - 3.0*4
Пример выходного файла
0
((1+2)-3)*4
[Параллельные вычисления
]
|
|
Сложность: 4 |
Задано арифметическое выражение, содержащее операции сложения,
умножения, круглые скобки и операнды, которыми являются буквы
английского алфавита. Нас будет интересовать скорость вычисления таких
выражений на многопроцессорной машине, поэтому скобки в них будем
расставлять в обязательном порядке для указания порядка проведения
операций.
Известно, что сложение двух чисел занимает время p, а умножение – время
q. Время, необходимое для вычисления сложного выражения
AoB, равно времени, затрачиваемому на выполнение операции
o, плюс максимальное из двух чисел – времени вычисления подвыражения A и времени вычисления
подвыражения B. Время вычисления операнда полагаем равным нулю.
Требуется написать программу, которая:
1. Определяет время, необходимое для вычисления заданного выражения на
многопроцессорной машине.
2. Находит эквивалентное заданному арифметическое выражение с
минимальным временем вычисления и само это время.
Выражения называется эквивалентными, если одно из них можно получить
из другого последовательностью следующих преобразований:
x + y → y + x
,
x * y → y * x
(коммутативный закон),
x + (y + z) → (x + y) + z , x * (y
* z) → (x * y) * z (ассоциативный закон).
Входные данные
В первой строке входного файла содержатся два целых числа p и q
(1 ≤ p,q ≤ 1000), во второй – арифметическое выражение длиной не более 200
символов.
Выходные данные
Первая строка выходного файла должна содержать ответ на первый пункт
задачи. Во вторую строку выведите эквивалентное заданному выражение с
минимальным временем вычисления, а в третью – само это время.
Пример входного файла
1 1
((a+(b+(c+d)))*e)*f
Пример выходного файла
5
((a+b)+(c+d))*(e*f)
3
[Золотая лихорадка
]
|
|
Сложность: 4 |
Алхимик Петя изобрел философский камень, с использованием которого можно
проводить некоторое множество алхимических реакций по превращению одних
веществ в другие. Масса вещества, которое подвергается превращению, и масса
каждого образующегося в результате реакции вещества составляет ровно один
грамм. Закон сохранения массы при этом может нарушаться, поскольку Пете он
неизвестен.
Изначально у Пети имеется один грамм свинца. С помощью философского
камня Петя может превратить свой свинец в другие вещества, на которые он
потом также сможет воздействовать философским камнем. Выполняя одну за
другой алхимические реакции, Петя стремится получить как можно больше
золота.
Требуется написать программу, определяющую по заданному описанию
алхимических реакций, выполняемых философским камнем, наибольшее
количество золота, которое может получить Петя.
Входные данные
В первой строке входного файла записано целое число K – количество
различных веществ, участвующих и образующихся в алхимических реакциях
(2 ≤ K ≤ 100). Вторая строка содержит названия этих веществ, разделенные
пробелом (в списке обязательно есть свинец и золото). Названия веществ не
длиннее 10 букв.
В третьей строке записано целое число L – количество типов реакций,
выполняемых философским камнем (1 ≤ L ≤ 100). Далее идут L описаний этих
реакций. Каждое описание реакции состоит из двух строк: первая строка
содержит название вещества, которое подвергается превращению, вторая –
названия веществ, получающихся в результате реакции.
Выходные данные
Ваша программа должна вывести в выходной файл либо одно целое число –
искомое количество граммов золота, либо сообщение «QUANTUM SATIS»
(лат. "Сколько нужно"), если Петя может получить любое наперед заданное количество золота.
Пример входного файла
4
свинец золото рога копыта
3
свинец
золото рога копыта
рога
золото копыта
копыта
золото
Пример выходного файла
4
Страница:
<< 1 2 3
4 >> [Всего задач: 20]