Задачи из первой открытой олимпиады по программированию от сайта pvolgin-task.ru

Первая открытая олимпиада по программированию от сайта pvolgin-task

Инструкция по участию в олимпиаде: участие в олимпиаде

(1): Числа Мануэля Майера

Числовая последовательность Мануэля Майера определяется правилом: каждое k-тое число из N-чисел в последовательности должны быть кратны M+k. N и M — целые числа, которые задаются пользователем. Все числа в последовательности должны идти в упорядоченном по возрастанию порядке. При этом каждое k-тое число должно увеличиваться на один десяток. Например, если первое число в последовательности 7, то следующее число, которое по правилу должно быть кратно 8, будет 16, а не 8. Например, при N = 5, M = 6 последовательность Майера будет состоять из чисел 6, 14, 24, 36, 40; при N = 7, M = 3 последовательность будет состоять из чисел 3, 12, 20, 30, 42, 56, 63. (N — количество чисел в последовательности, M — такое число, что каждый элемент в последовательности должен быть кратным выражению M + k, где k — номер числа в последовательности, нумерация последовательности начинается на нуля). Напишите две программы:

  1. Программа, которая по входным двум числам N и M строит искомую последовательность. Программа получает на вход два целых числа, N и M. Программа должна вывести последовательность из N чисел, удовлетворяющих условию.
  2. Программа, которая при трех введенных данных N, M, k определяет, может ли находиться число k в последовательности при исходных N и M.

(2): Шифровальщик

Вячеслав и Николай придумали свой тайный язык — вместо русских букв мальчики используют числа. Причем четные числа являются гласными буквами, а нечетные числа — согласными буквами. Вместо пробела используется символ «-«. Все знаки препинания шифруются с помощью цифры 0. Причем неизвестно какая именно цифра обозначает какую именно букву. Это сделано для еще более секретности шифрования. В одном сообщении одна и та же цифра может обозначать разные буквы, но допустимо не больше трех повторений одной буквы. Вячеслав и Николай пытаются перебирать все возможные варианты расшифровки сообщения с помощью программы. Сообщением считается наиболее значимое по смыслу слово. Например, сообщение 5723490_765 может быть расшифровано как «привет, мир». В файле «sh.txt» представлено сообщение, зашифрованное с помощью специального языка Вячеслава и Николая. Напишите программу, которая выводит все варианты расшифровки данного сообщения, и запишите в новый файл наиболее подходящий по смыслу вариант расшифровки. Запись в новый файл должна производиться с помощью создаваемой программы.

sh

(3): Рейтинг школы

В стране «N» все школы распределяются по 4 зонам, которые имеют номера, 1, 2, 3, 4. В зону «1» входят с лучшим рейтингом, в зону «2» с рейтингом хуже, чем в «1». В  зону «3» входят специальные школы с профильным углублением (например, спортивные школы, школы иностранного языка и т.д), в зону «4» входят все остальные школы. Чтобы определить зону школы, перед регистрацией школы необходимо собрать данные для определения рейтинга. Рейтинг школы — это число от 1 до 255, где 255 — самый высокий рейтинг, 1 — самый низкий. Все рейтинги школ кодируются шестнадцатеричным кодом от 1 до FF. Причем, школы зоны «3» должны иметь две одинаковые шестнадцатеричные цифры, кроме FF. (Например, 11, 22, АА, ЕЕ). Школы с наибольшим рейтингом идут в зону «1», с наименьшим — в зону «4». Причем, в зоне «1» может находится только 20 % от вводимых в программу школ (ближайшее целое число к этому значению), но как минимум одна школа должна находится в зоне «1». Например, если вводятся 10 номеров школ, то в зону «1» могут попасть только две школы. А если вводятся 3 номера школы, то в зону «1» может попасть только одна школа. В зону «2» должны идти школы, которые не смогли попасть в зону «1», но которые имеют близкие рейтинги к школам в зоне «1» (рейтиги таких школ должны быть не меньше, чем 50% от школы с самым низким рейтингом зоны «1»). Напишите программу, которая получает на вход число N — количество школ (N > 2), а затем в N строках получает номер школы и через пробел его рейтинг в шестнадцатеричной системе (буквенные значения можно вводить как с большой, так и с маленькой буквы). Программа должна для каждой школы вывести его зону.

Пример работы программы:

(4): База данных

Ниже представлена база данных в трех текстовых файлах. В файле «id» находятся информация об id предмета(первое число), id ученика (второе число) и о его оценке за этот предмет (третье число). Все данные записаны через пробел. Каждая новая запись написана с новой строчки. В файле «subject» находится информация об id предмета (первое число) и названии предмета через пробел, а в файле «family» находится информация об id ученика (первое число) и о фамилии ученика, записанные через пробел. Напишите программу, которая в приведенной базе данных выводит на экран фамилии всех отличников по предмету «math». 

family id subject