Тысяча девятьсот восемьдесят четыре
Пример выходных данных для приведённого выше примера входных данных:
41) Вам необходимо написать программу анализа текста. На вход программе подаются строки, содержащие английские слова. В одной строке может быть произвольное количество слов. Все слова записаны строчными (маленькими) английскими буквами. Между словами в строке может быть один или больше пробелов, возможны пробелы в начале и в конце строки. Других символов, кроме строчных английских букв и пробелов, в строках нет. Длина каждой строки не превышает 200 символов. Количество строк неизвестно, общее количество слов не более одного миллиона. Конец ввода обозначается строкой, содержащей единственный символ «*».
Напишите эффективную, в том числе по памяти, программу, которая будет определять количество слов, начинающихся на каждую букву английского алфавита, и выводить эти количества и соответствующие им буквы в порядке убывания. Если количество слов, начинающихся на какие-то буквы, совпадает, эти буквы следует выводить в алфавитном порядке. Если на какую-то букву слов нет, выводить эту букву не надо.
Размер памяти, которую использует Ваша программа, не должен зависеть от размера исходного списка.
Перед текстом программы кратко опишите используемый Вами алгоритм решения задачи и укажите используемый язык программирования и его версию.
Пример входных данных:
One two three four five
A quick brown fox
*
Пример выходных данных для приведенного выше примера входных данных:
F 3
T 2
А 1
B 1
О 1
Q 1
Примечание. Английский алфавит совпадает с латинским и содержит 26 букв от а до z:
Abcdefghijklmnopqrstuvwxyz
42) На ускорителе для большого числа частиц производятся замеры скорости каждой из них. Чтобы в документации качественно отличать одну серию от другой, каждую серию решили характеризовать числом, равным минимальному произведению из всех произведений пар скоростей различных частиц. Вам предлагается написать эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая будет обрабатывать результаты эксперимента, находя искомую величину. В нашей модели скорость частицы - это величина, которая может принимать как положительные, так и отрицательные значения. Следует учитывать, что частиц, скорость которых измерена, может быть очень много, но не может быть меньше двух.
Перед текстом задачи кратко опишите используемый вами алгоритм решения задачи.
На вход программе в первой строке подается количество частиц N. В каждой из последующих N строк записано одно целое число со знаком (плюс или минус), по абсолютной величине не превосходящее 10000.
Пример входных данных:
5
+123
+2000
+10
+3716
+10
Программа должна вывести одно число - минимальное произведение из всех произведений пар скоростей различных частиц.
Пример выходных данных для приведенного выше примера входных данных:
43) На ускорителе для большого числа частиц производятся замеры скорости каждой из них. Все скорости положительны. Чтобы в документации качественно отличать одну серию эксперимента от другой каждую серию решили характеризовать числом равным минимальной чётной сумме из всех сумм пар скоростей различных частиц. Если чётная сумма отсутствует, то характеристикой будет являться просто минимальная сумма.
Вам предлагается написать эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования), которая будет обрабатывать результаты эксперимента, находя искомую величину. Следует учитывать, что частиц, скорость которых измерена, может быть очень много, но не может быть меньше двух.
Перед текстом программы кратко опишите используемый вами алгоритм решения задачи.
На вход программе в первой строке подается количество частиц N. В каждой из последующих N суток записано одно натуральное число не превышающее 30000.
Пример входных данных:
5
123
1000
12
2548
12
Программа должна вывести характеристику данной серии экспериментов.
Пример выходных данных для приведенного выше примера входных данных:
44)На электронную почту Вам пришло письмо, подписанное аббревиатурой (первыми буквами фамилии, имени и отчества (далее - ФИО) отправителя). Аббревиатура оказалась Вам незнакома. У Вас есть список всех предполагаемых отправителей, взятый из ранее полученных писем, среди которых различных людей с такой аббревиатурой не больше 10.
Вам предлагается написать эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка, например Borland Pascal 7.0), которая определит всех вероятных адресатов – людей, ФИО которых можно сократить до нужной аббревиатуры. ФИО следует выдать в порядке убывания частоты их встречаемости в списке.
На вход программе в первой строке подается аббревиатура – строка, состоящая из трех заглавных латинских букв. Во второй строке находится число N – количество ФИО, полученных в результате анализа почты, не все из них подходят под указанную аббревиатуру. Значение N может быть очень велико. В каждой из следующих N строк записано три слова: Фамилия Имя Отчество соответствующего человека. Слова разделяются одним пробелом. В конце и в начале строки пробелов нет. Все слова записаны заглавными латинскими буквами. Длина ФИО не превышает 100 символов. Гарантируется, что хотя бы один человек с нужной аббревиатурой есть.
Пример входных данных:
IPI
4
IVANOV PETR IVANOVICH
PETROV IVAN IVANOVICH
IVANOV PETR IVANOVICH
ILYIN PETR ILYICH
Программа должна вывести предполагаемых отправителей письма с указанием частоты их встречаемости в списке (в порядке убывания частоты).
Пример выходных данных для приведенного выше примера входных данных:
IVANOV PETR IVANOVICH 2
ILYIN PETR ILYICH 1
45) На вход программе подаются сведения о пассажирах, желающих сдать свой багаж в камеру хранения на заранее известное время до полуночи. В первой строке сообщается число пассажиров N, которое не меньше 3, но не превосходит 1000; во второй строке – количество ячеек в камере хранения K, которое не меньше 10, но не превосходит 1000. Каждая из следующих N
строк имеет следующий формат:
<Фамилия> <время сдачи багажа> <время освобождения ячейки>,
где <Фамилия> – строка, состоящая не более чем из 20 непробельных символов; <время сдачи багажа> – через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа); <время освобождения ячейки> имеет тот же формат. <Фамилия> и <время сдачи багажа>, а также <время сдачи багажа> и <время освобождения ячейки> разделены одним пробелом. Время освобождения больше времени сдачи.
Сведения отсортированы в порядке времени сдачи багажа. Каждому из пассажиров в камере хранения выделяется свободная ячейка с минимальным номером. Если в момент сдачи багажа свободных ячеек нет, то пассажир уходит, не дожидаясь освобождения одной из них.
Требуется написать программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая будет выводить на экран для каждого пассажира номер ему предоставленной ячейки (можно сразу после ввода данных очередного пассажира). Если ячейка пассажиру не предоставлена, то его фамилия не печатается.
Пример входных данных:
Иванов 09:45 12:00
Петров 10:00 11:00
Сидоров 12:00 13:12
Результат работы программы на этих входных данных:
Иванов 1
Петров 2
Сидоров 1
46) На плоскости дан набор точек с целочисленными координатами. Необходимо найти треугольник наибольшей площади с вершинами в этих точках, одна из сторон которого лежит на оси OX. Напишите эффективную, в том числе по памяти, программу, которая будет решать эту задачу. Размер памяти, которую использует Ваша программа, не должен зависеть от длины переданной последовательности чисел. Укажите используемый язык программирования и его версию.
В первой строке вводится одно целое положительное число – количество точек N. Каждая из следующих N строк содержит два целых числа – сначала координата х, затем координата у очередной точки.
Программа должна вывести одно число – максимальную площадь треугольника, удовлетворяющего условиям задачи. Если такого треугольника не существует, программа должна вывести ноль.
Пример входных данных:
0 0
2 0
0 4
3 3
5 5
-6 -6
Пример выходных данных для приведенного выше примера входных данных:
47) На плоскости дан набор точек с целочисленными координатами. Необходимо найти такой треугольник наибольшей площади с вершинами в этих точках, у которого нет общих точек с осью Оу, а одна из сторон лежит на оси Ох.
Напишите эффективную, в том числе по памяти, программу, которая будет решать эту задачу. Размер памяти, которую использует Ваша программа, не должен зависеть от количества точек.
Перед текстом программы кратко опишите используемый алгоритм решения задачи и укажите используемый язык программирования и его версию.
Описание входных данных
В первой строке вводится одно целое положительное число - количество точек N.
Каждая из следующих N строк содержит два целых числа - сначала координата х, затем координата у очередной точки. Числа разделены пробелом.
Описание выходных данных
Программа должна вывести одно число - максимальную площадь треугольника, удовлетворяющего условиям задачи. Если такого треугольника не существует, программа должна вывести ноль.
Пример входных данных:
-10 0
2 0
0 4
3 3
7 0
5 5
4 0
9 -9
Пример выходных данных для приведённого выше примера входных данных:
22.5
48) Соревнования по игре «Тетрис-онлайн» проводятся по следующим правилам.
Каждый участник регистрируется на сайте игры под определённым игровым именем. Имена участников не повторяются.
Чемпионат проводится в течение определённого времени. В любой момент этого времени любой зарегистрированный участник может зайти на сайт чемпионата и начать зачётную игру. По окончании игры её результат (количество набранных очков) фиксируется и заносится в протокол.
Участники имеют право играть несколько раз. Количество попыток одного участника не ограничивается.
Окончательный результат участника определяется по одной игре, лучшей для данного участника.
Более высокое место в соревнованиях занимает участник, показавший лучший результат.
При равенстве результатов более высокое место занимает участник, раньше показавший лучший результат.
В ходе соревнований заполняется протокол, каждая строка которого описывает одну игру и содержит результат участника и его игровое имя. Протокол формируется в реальном времени по ходу проведения чемпионата, поэтому строки в нём расположены в порядке проведения игр: чем раньше встречается строка в протоколе, тем раньше закончилась соответствующая этой строке игра.
Напишите эффективную, в том числе по памяти, программу, которая по данным протокола определяет победителя и призёров. Гарантируется, что в чемпионате участвует не менее трёх игроков.
Перед текстом программы кратко опишите алгоритм решения задачи и укажите используемый язык программирования и его версию.
Описание входных данных
Первая строка содержит число N- общее количество строк протокола. Каждая из следующих N строк содержит записанные через пробел результат участника (целое неотрицательное число, не превышающее 100 миллионов) и игровое имя (имя не может содержать пробелов). Строки исходных данных соответствуют строкам протокола и расположены в том же порядке, что и в протоколе.
Гарантируется, что количество участников соревнований не меньше 3.
Описание выходных данных
Программа должна вывести имена и результаты трёх лучших игроков по форме, приведённой ниже в примере.
Пример входных данных:
Jack
Qwerty
Alex
М
Qwerty
Jack
Alex
Alex
M
Пример выходных данных для приведённого выше примера входных данных:
Место. qwerty (197128)
Место. Alex (95715)
Место. Jack (95715)
49) Дан список точек плоскости с целочисленными координатами. Необходимо определить:
1) номер координатной четверти K, в которой находится больше всего точек;
2) точку A в этой четверти, наименее удалённую от осей координат;
3) расстояние R от этой точки до ближайшей оси.
Если в нескольких четвертях расположено одинаковое количество точек, следует выбрать ту четверть, в которой величина R меньше. При равенстве и количества точек, и величины R необходимо выбрать четверть с меньшим номером K. Если в выбранной четверти несколько точек находятся на одинаковом минимальном расстоянии от осей координат, нужно выбрать
первую по списку. Точки, хотя бы одна из координат которых равна нулю, считаются не принадлежащими ни одной четверти и не рассматриваются. Напишите эффективную, в том числе по памяти, программу, которая будет решать эту задачу.
Описание входных данных
В первой строке вводится одно целое положительное число – количество точек N. Каждая из следующих N строк содержит координаты очередной точки – два целых числа (первое – координата x, второе – координата y).
Описание выходных данных
Программа должна вывести номер выбранной четверти K, количество точек в ней M, координаты выбранной точки A и минимальное расстояние R по образцу, приведённому ниже в примере.
Пример входных данных:
-3 4
1 2
1 1
0 4
-2 -3
-6 8
-12 1
Пример выходных данных для приведённого выше примера входных данных:
K = 2
M = 3
A = (-12, 1)
R = 1
50) Радиотелескоп пытается получать и анализировать сигналы из космоса. Различные шумы переводятся в последовательность вещественные неотрицательные числа, заданные с точностью до 1 знака после десятичной точки. Для того чтобы описывать различные участки космоса, данные, получаемые из одного района, было решено характеризовать числом, равным максимальному произведению, которое можно получить, перемножая значения сигналов, приходящих из этого района. То есть требуется выбрать такое непустое подмножество сигналов (в него может войти как один сигнал, так и все поступившие сигналы), произведение значений у которого будет максимальным. Если таких подмножеств несколько, то выбрать можно любое из них.
Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет обрабатывать результаты эксперимента, находя искомое подмножество. Сигналов может быть очень много, но не может быть меньше трех. Все сигналы различны.
Перед текстом программы кратко опишите используемый вами алгоритм решения задачи.
На вход программе в первой строке подается количество сигналов N. В каждой из последующих N строк записано одно вещественное число с точностью до 1 знака после десятичной точки. Все числа различны.
Пример входных данных:
12.3
0.1
100.2
0.3
1.4
Программа должна вывести в порядке возрастания номера сигналов, произведение которых будет характеризовать данную серию. Нумерация сигналов ведется с единицы.
Пример выходных данных для приведенного выше примера входных данных:
1 3 5
51) По каналу связи передаются данные в виде последовательности положительных целых чисел. Количество чисел заранее неизвестно, но не менее двух, признаком конца данных считается число 0. После данных передаётся контрольное значение. Оно равно такому максимально возможному произведению двух чисел из переданного набора, которое делится на 7, но не делится на 49. Если такое произведение получить нельзя, контрольное значение считается равным 1.
Напишите эффективную, в том числе по памяти, программу, которая будет моделировать процесс приёма данных. Программа должна ввести все числа и контрольное значение и напечатать краткий отчёт, включающий количество принятых чисел, принятое контрольное значение, вычисленное контрольное значение и вывод о совпадении значений.
Перед текстом программы кратко опишите алгоритм решения задачи и укажите используемый язык программирования и его версию.
Описание входных данных
В каждой строке исходных данных содержится одно целое число. Сначала идут строки с основными данными – положительными числами, затем число 0 (признак окончания данных), в последней строке – контрольное значение.
Описание выходных данных
Программа должна вывести отчёт по форме, приведённой ниже в примере.
Пример входных данных:
Пример выходных данных для приведённого выше примера входных данных:
Введено чисел: 4
Контрольное значение: 64
Вычисленное значение: 63
Значения не совпали
52) Дед Мороз и Снегурочка приходят на детские утренники с мешком конфет. Дед Мороз делит конфеты поровну между всеми присутствующими детьми (детей на утреннике никогда не бывает больше 100), а оставшиеся конфеты отдает Снегурочке. Снегурочка каждый раз записывает в блокнот количество полученных конфет. Если конфеты разделились между всеми детьми без остатка, Снегурочка ничего не получает и ничего не записывает. Когда утренники закончились, Деду Морозу стало интересно, какое число чаще всего записывала Снегурочка. Дед Мороз и Снегурочка – волшебные, поэтому число утренников N, на которых они побывали, может быть очень большим.
Напишите программу, которая будет решать эту задачу. Перед текстом программы кратко опишите алгоритм решения задачи и укажите используемый язык программирования и его версию.
Желательно, чтобы программа была эффективной как по времени работы, так и по используемой памяти. Программу будем считать эффективной по памяти, если используемая память не зависит от размера входных данных (то есть числа утренников). Программу будем считать эффективной по
времени, если при увеличении размера входных данных N в t раз (t – любое число) время её работы увеличивается не более чем в t раз.
Описание входных данных
В первой строке вводится одно целое положительное число – количество утренников N.
Каждая из следующих N строк содержит два целых числа: сначала D – количество пришедших на очередной утренник детей, а затем K – количество конфет в мешке Деда Мороза на этом утреннике. Гарантируется выполнение следующих соотношений:
1 ≤ N ≤ 10000
1 ≤ D ≤ 100 (для каждого D)
D ≤ K ≤ 1000 (для каждой пары D, K)
Описание выходных данных
Программа должна вывести одно число – то, которое Снегурочка записывала чаще всего. Если несколько чисел записывались одинаково часто, надо вывести большее из них. Если Снегурочка ни разу ничего не записывала, надо вывести ноль.
Пример входных данных:
10 58
15 315
20 408
100 1000
32 63
32 63
11 121
Пример выходных данных для приведённого выше примера входных данных:
53) Гоночная трасса состоит из двух основных дорог и нескольких переездов, позволяющих перейти с одной дороги на другую.
На всех участках, включая переезды, движение разрешено только в одну сторону, поэтому переезд возможен только с дороги A на дорогу B. Гонщик стартует в точке A0 и должен финишировать в точке BN. Он знает, за какое время сможет пройти каждый участок пути по каждой дороге, то есть время прохождения участков A0A1, A1A2, ..., AN-1AN, B0B1, B1B2, ..., BN-1BN. Время прохождения всех переездов A0B0, A1B1, ..., ANBN одинаково и известно гонщику. Необходимо определить, за какое минимальное время гонщик сможет пройти трассу.
Напишите эффективную, в том числе по используемой памяти, программу для решения этой задачи. Перед текстом программы кратко опишите алгоритм решения и укажите язык программирования и его версию.
Входные данные
В первой строке задаётся количество участков трассы N. Во второй строке задаётся целое число t – время (в секундах) прохождения каждого из переездов A0B0, A1B1, …, ANBN. В каждой из последующих N строк записано два целых числа ai и bi, задающих время (в секундах) прохождения очередного участка на каждой из дорог. В первой из этих строк указывается время прохождения участков A0A1 и B0B1, во второй – A1A2 и B1B2 и т. д.
Пример входных данных
320 150
200 440
300 210
Выходные данные
Программа должна напечатать одно целое число: минимально возможное
время прохождения трассы (в секундах).
Пример выходных данных для приведённого выше примера входных данных
54) На вход программы подаются результаты измерений, выполняемых прибором с интервалом 1 минуту. Все данные – целые числа (возможно, отрицательные). Требуется найти наибольшую сумму двух результатов измерений, выполненных с интервалом не менее, чем в 7 минут.
Описание входных данных
В первой строке вводится одно целое положительное число – количество измерений N, которое может быть очень велико. Гарантируется, что N > 7. Каждая из следующих N строк содержит по одному целому числу – результат очередного измерения.
Описание выходных данных
Программа должна вывести одно число наибольшую сумму двух результатов измерений, выполненных с интервалом не менее, чем в 7 минут.
Пример входных данных:
Пример выходных данных для приведённого выше примера входных данных:
55) На вход программы подаются результаты измерений, выполняемых прибором с интервалом 1 минуту. Все данные – натуральные числа, не превышающие 1000. Требуется найти наименьшую сумму квадратов двух результатов измерений, выполненных с интервалом не менее, чем в 5 минут.
Описание входных данных
В первой строке вводится одно натуральное число – количество измерений N. Гарантируется, что 5 < N £ 10000. Каждая из следующих N строк содержит по одному натуральному числу – результат очередного измерения.
Описание выходных данных
Программа должна вывести одно число наименьшую сумму квадратов двух результатов измерений, выполненных с интервалом не менее, чем в 5 минут.
Пример входных данных:
Пример выходных данных для приведённого выше примера входных данных:
[1] Или используется перенаправление входного потока из командной строки, но это уже абсолютно неважно…
[2] Источники заданий:
1. Демонстрационные варианты ЕГЭ разных лет.
2. Тренировочные и диагностические работы МИОО.
3. Гусева И.Ю. ЕГЭ. Информатика: раздаточный материал тренировочных тестов. — СПб: Тригон, 2009.
4. Самылкина Н.Н., Островская Е.М. Информатика: тренировочные задания. – М.: Эксмо, 2009.
5. Зорина Е.М., Зорин М.В. ЕГЭ-2010: Информатика: Сборник заданий. – М.: Эксмо, 2009.
6. Якушкин П.А., Крылов С.С. ЕГЭ-2010. Информатика: сборник экзаменационных заданий. – М.: Эксмо, 2009.
7. Якушкин П.А., Ушаков Д.М. Самое полное издание типовых вариантов реальных заданий ЕГЭ 2010. Информатика. — М.: Астрель, 2009.
[3] Этот индекс используется в криптоанализе для взлома шифра Виженера (http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_%D1%81%D0%BE%D0%B2%D0%BF%D0%B0%D0%B4%D0%B5%D0%BD%D0%B8%D0%B9).