Инструменты пользователя

Инструменты сайта


подготовка_к_олимпиаде._тур_2

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

Пароль – это хитрая штука. Пользователи предпочитают простые пароли, которые легко запомнить (такие как wizard), но такие пароли небезопасны. Часто используются случайно сгенерированные пароли (такие как xvtpzyo), но пользователям их сложно запомнить, и они записывают их на листке и приклеивают к компьютеру. Одно из возможных решений заключается в генерации «выговариваемых» паролей, которые довольно безопасны и легко запоминаемы.

Компания Macrohard разработала такой генератор паролей. Ваша задача – протестировать этот генератор и убедиться, что все сгенерированные пароли удовлетворяют следующим трем правилам:

  1. Пароль должен содержать как минимум одну гласную.
  2. Пароль не должен содержать трех или более гласных подряд или трех или более согласных подряд.
  3. Пароль не должен содержать двух одинаковых букв подряд, за исключением '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.

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

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

Во входном файле содержится одно или более натуральное число. Каждое число записано на отдельной строке и не превосходит 101000. Строка с 0 означает конец входного файла.

В выходной файл вывести цифровой корень для всех чисел из входного файла (кроме 0), каждый на отдельной строке.

Пример вводаПример вывода
38
24
0
2
6

3. Часы

Возьмем обычные механические часы с часовой и минутной стрелкой. Сколько раз в указанном интервале времени минутная стрелка совпадет с часовой?

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

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

Пример вводаПример вывода
01:02 12:5011

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

Однажды известный автор головоломок С.Лойд, прогуливаясь со своим приятелем по ярмарке, набрел на забавный аттракцион. На полках были расставлены десять кукол, на каждой из которых было обозначено число очков (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
/home/m/mvgoru/wiki.gumnasion.ru/public_html/data/pages/подготовка_к_олимпиаде._тур_2.txt · Последние изменения: 2013/10/21 15:36 — Пронин Роман