Подразделы

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

Дата и время

25/04/2024 15:08:46

Авторизация

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

printЗадачи районно-городских командных соревнований 2002

1. Генератор паролей

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

Пароль – это хитрая штука. Пользователи предпочитают простые пароли, которые легко запомнить (такие как wizard), но такие пароли небезопасны. Часто используются случайно сгенерированные пароли (такие как xvtpzyo), но пользователям их сложно запомнить, и они записывают их на листке и приклеивают к компьютеру. Одно из возможных решений заключается в генерации "выговариваемых" паролей, которые довольно безопасны и легко запоминаемы.
Компания Macrohard разработала такой генератор паролей. Ваша задача – протестировать этот генератор и убедиться, что все сгенерированные пароли удовлетворяют следующим трем правилам:
  • Пароль должен содержать как минимум одну гласную.
  • Пароль не должен содержать трех или более гласных подряд или трех или более согласных подряд.
  • Пароль не должен содержать двух одинаковых букв подряд, за исключением 'ee' или 'oo'.
В этой задаче используются только латинские буквы и к гласным относятся только буквы 'a', 'e', 'i', 'o' и 'u', а остальные буквы являются согласными. Замечание: при этих условиях многие обычные и выговариваемые слова окажутся не подходящими на роль пароля.
Входной файл содержит один или более потенциальных паролей, по одному паролю в строке. Строка, в которой содержится слово "end", является последней строкой входного файла и сигнализирует о завершении списка паролей. Каждый пароль имеет длину от 1 до 20 букв и содержит только строчные латинские буквы.
В выходной файл для каждого пароля выдать строку с информацией, является ли пароль подходящим для "выговаривания" или нет, как показано в примере. Для строки со словом "end" в выходной файл не выводится ничего.

Пример ввода

a
tv
ptoui
bontres
zoggax
wiinq
eep
houctuh
end

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

'a' is acceptable.
'tv' is not acceptable.
'ptoui' is not acceptable.
'bontres' is not acceptable.
'zoggax' is not acceptable.
'wiinq' is not acceptable.
'eep' is acceptable.
'houctuh' is acceptable.
Источник: ACM ICPC MCRC, 2002

2. Цифровой корень

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

Для получения цифрового корня используется следующий алгоритм. Возьмем натуральное число и сложим все его цифры. Если результат состоит из двух или более цифр, тогда продолжаем суммирование цифр результата до получения результата из одной цифры. Когда в результате получится одна цифра, то мы получим цифровой корень числа. Возьмем для примера число 38, после сложения получаем число 11, так как это число из двух цифр, вновь складываем эти цифры и получаем 2 – цифровой корень числа 38.
Во входном файле содержится одно или более натуральное число. Каждое число записано на отдельной строке и не превосходит `10^1000`. Строка с 0 означает конец входного файла.
В выходной файл вывести цифровой корень для всех чисел из входного файла (кроме 0), каждый на отдельной строке.

Пример ввода

38
24
0

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

2
6

3. Часы

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

Возьмем обычные механические часы с часовой и минутной стрелкой. Сколько раз в указанном интервале времени минутная стрелка совпадет с часовой?
Во входном файле в первой строке содержатся две пары целых числа. Каждая пара чисел разделена символом ':' (двоеточие), пары друг от друга отделены одним пробелом. Каждое число в паре представлено с помощью двух цифр, даже если оно меньше 10. Первая пара чисел – это начальное время интервала, а вторая – конечное. Первое число в паре означает часы и лежит в диапазоне от 01 до 12, второе – минуты и лежит в диапазоне от 00 до 59. В качестве начального или конечного времени не используются время, когда часовая и минутная стрелки совпадают. Также начальное и конечное время не совпадают. Между начальным и конечным временем проходит меньше 12 часов, т.е. часовая стрелка в указанном интервале повернется на угол меньше 360 градусов. Если начальное время больше конечного времени интервала, то это означает, что часовая стрелка при движении прошла через отметку 1 час.
В выходной файл вывести одну строку, содержащую одно целое число – сколько раз минутная стрелка совпадала с часовой в заданном интервале времени.

Пример ввода

01:02 12:50

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

11

4. Аттракцион

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

Однажды известный автор головоломок С.Лойд, прогуливаясь со своим приятелем по ярмарке, набрел на забавный аттракцион. На полках были расставлены десять кукол, на каждой из которых было обозначено число очков (25, 27, 3, 12, 6, 15, 9, 30, 21, 19). Требовалось попасть в них небольшими мячиками. Зазывала объяснял:
- Бросайте мячики столько раз, сколько захотите, по центу за каждый бросок и подходите к куклам так близко, как пожелаете. Складывайте очки на сбитых вами куклах, и, как только сумма окажется равной 50, не больше и не меньше, вы получите великолепную сигару с золотым ободком стоимостью 25 центов.
Большинство игравших проигрывали деньги, не получая сигары. Но для программиста не будет сложной задачей написать программу, которая определит, какие куклы надо сбить.
В первой строке входного файла – число кукол `N` (`2\ ≤\ N\ ≤\ 15`) и сумма очков `S` (`-10\ 000\ 000\ ≤\ S\ ≤\ 10\ 000\ 000`), которую нужно получить, во второй строке – число очков на каждой кукле. Число очков может быть в диапазоне от `-1\ 000\ 000` до `1\ 000\ 000`.
В выходной файл вывести на одной строке очки на куклах, которые надо сбить. Куклы указываются в том же порядке, как они перечислены во входном файле. Предполагается, что решение существует всегда и оно единственное.

Пример ввода

10 50
25 27 3 12 6 15 9 30 21 19

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

25 6 19

5. Форматирование таблиц

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

Некоторую информацию требуется представить в виде таблицы, при этом информация в колонках таблицы может быть выровнена влево, вправо или по центру. Ширина каждой колонки определяется ее содержимым.
Входной файл содержит описание одной таблицы. Описание начинается со строки, описывающей выравнивание колонок в таблице. Количество символов в строке равно числу колонок в таблице. Символ '<' означает выравнивание информации в колонке влево, символ '>' – вправо, а символ '=' – по центру. Других символов в этой строке не может быть. Следующая строка содержит непустые заголовки колонок, разделенные символом '&'. Количество заголовков также соответствует числу колонок. Далее идет от 1 до 20 строк, содержащих данные для таблицы. Каждая строка соответствует одной строке таблицы, данные разделены символом '&' и их количество соответствует числу колонок таблицы. Пробелы могут появляться внутри элемента данных (заголовка), но никогда перед или после элемента (заголовка). Тексты заголовков и данные не содержат символов '&', '<', '>', '=' и '*'. Строка с символом '*' завершает описание таблицы.
В выходной файл вывести таблицу по ее описанию, как показано в примере. При этом:
  • Общая ширина готовой таблицы не превысит 79 символов.
  • Для изображения горизонтальных линий нужно использовать символ '-' (минус). Символ '@' должен стоять во всех четырех внешних углах таблицы. Символ '+' (плюс) появляется только на пересечении линий только в строке, отделяющей заголовок от тела таблицы. Для изображения границ колонок нужно использовать символ '|' (вертикальная черта, на клавиатуре иногда изображается с разрывом).
  • Самый длинный элемент данных (заголовок) в колонке таблицы должен быть отделен от обеих границ колонки точно одним пробелом.
  • Если центрируемый элемент данных (заголовок) не может быть точно центрирован, дополнительный пробел добавляется справа от элемента данных (заголовка).
  • Не должно быть пробелов в начале или в конце строки. Символы табуляции нельзя использовать.

Пример ввода

<>=>
TITLE&VERSION&OPERATING SYSTEM&PRICE
Slug Farm&2.0&FreeBSD&49.99
Figs of Doom&1.7&Linux&9.98
Smiley Goes to Happy Town&11.0&Windows&129.25
Wheelbarrow Motocross&1.0&BeOS&34.97
*

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

@-----------------------------------------------------------------@
| TITLE                     | VERSION | OPERATING SYSTEM |  PRICE |
|---------------------------+---------+------------------+--------|
| Slug Farm                 |     2.0 |     FreeBSD      |  49.99 |
| Figs of Doom              |     1.7 |      Linux       |   9.98 |
| Smiley Goes to Happy Town |    11.0 |     Windows      | 129.25 |
| Wheelbarrow Motocross     |     1.0 |       BeOS       |  34.97 |
@-----------------------------------------------------------------@
Источник: ACM ICPC MCRC, 2002
loading