пятница, 14 марта 2014 г.

Задания на анализ числовых последовательностей

№1 
В те­ле­ви­зи­он­ном тан­це­валь­ном ма­ра­фо­не с опре­де­ле­ни­ем по­бе­ди­те­ля с по­мо­щью те­ле­зри­те­лей после каж­до­го тура объ­яв­ля­ет­ся sms-го­ло­со­ва­ние, в ко­то­ром зри­те­ли ука­зы­ва­ют наи­бо­лее по­нра­вив­шу­ю­ся им пару из мак­си­мум 10 пар, ко­то­рые участ­ву­ют в про­ек­те. Вам пред­ла­га­ет­ся на­пи­сать эф­фек­тив­ную, в том числе по ис­поль­зу­е­мой па­мя­ти, про­грам­му, ко­то­рая будет об­ра­ба­ты­вать ре­зуль­та­ты sms-го­ло­со­ва­ния по дан­но­му во­про­су. Ре­зуль­та­ты го­ло­со­ва­ния по­лу­че­ны в виде но­ме­ров пар (каж­дый эле­мент спис­ка со­от­вет­ству­ет од­но­му sms-со­об­ще­нию). Сле­ду­ет учи­ты­вать, что ко­ли­че­ство го­ло­сов в спис­ке может быть очень ве­ли­ко. Перед тек­стом про­грам­мы крат­ко опи­ши­те ис­поль­зу­е­мый Вами ал­го­ритм ре­ше­ния за­да­чи. На вход про­грам­ме в пер­вой стро­ке подаётся ко­ли­че­ство при­шед­ших sms-со­об­ще­ний N. В каж­дой из по­сле­ду­ю­щих N строк за­пи­сан номер пары от 1 до 10.При­мер вход­ных дан­ных:
4
2
10
3
2

Про­грам­ма долж­на вы­ве­сти спи­сок всех пар, встре­ча­ю­щих­ся в спис­ке, в по­ряд­ке воз­рас­та­ния (не­убы­ва­ния) ко­ли­че­ства го­ло­сов, от­дан­ных за ту или иную пару, с ука­за­ни­ем ко­ли­че­ства от­дан­ных за неё го­ло­сов. При этом каж­дая пара долж­на быть вы­ве­де­на ровно один раз вне за­ви­си­мо­сти от того, сколь­ко раз она встре­ча­ет­ся в спис­ке.При­мер вы­ход­ных дан­ных для при­ведённого выше при­ме­ра вход­ных дан­ных:
3 1
10 1
2 2

№2
В ко­манд­ных олим­пи­а­дах по про­грам­ми­ро­ва­нию для ре­ше­ния пред­ла­га­ет­ся не боль­ше 12 задач. Ко­ман­да может ре­шать пред­ло­жен­ные за­да­чи в любом по­ряд­ке. Под­го­тов­лен­ные ре­ше­ния ко­ман­да по­сы­ла­ет в еди­ную про­ве­ря­ю­щую си­сте­му со­рев­но­ва­ний. Вам пред­ла­га­ет­ся на­пи­сать эф­фек­тив­ную, в том числе по ис­поль­зу­е­мой па­мя­ти, про­грам­му, ко­то­рая будет ста­ти­сти­че­ски об­ра­ба­ты­вать при­шед­шие за­про­сы на про­вер­ку, чтобы опре­де­лить по­пу­ляр­ность той или иной за­да­чи. Сле­ду­ет учи­ты­вать, что ко­ли­че­ство за­про­сов в спис­ке может быть очень ве­ли­ко, так как мно­гие со­рев­но­ва­ния про­хо­дят с ис­поль­зо­ва­ни­ем сети Ин­тер­нет. Перед тек­стом про­грам­мы крат­ко опи­ши­те ис­поль­зу­е­мый Вами ал­го­ритм ре­ше­ния за­да­чи. На вход про­грам­ме в пер­вой стро­ке подаётся ко­ли­че­ство при­шед­ших за­про­сов N. В каж­дой из по­сле­ду­ю­щих N строк за­пи­сан номер за­да­чи от 1 до 12. При­мер вход­ных дан­ных:
6
1
2
1
1
5
2

Про­грам­ма долж­на на­пе­ча­тать све­де­ния о ко­ли­че­стве за­про­сов на про­вер­ку для каж­дой за­да­чи. Све­де­ния о каж­дой за­да­че вы­во­дят­ся в от­дель­ной стро­ке: сна­ча­ла вы­во­дит­ся номер за­да­чи, потом — со­от­вет­ству­ю­щее ко­ли­че­ство за­про­сов. Све­де­ния о за­да­чах, ко­то­рые не по­сту­па­ли на про­вер­ку, вы­во­дить не нужно. Стро­ки долж­ны быть упо­ря­до­че­ны по убы­ва­нию ко­ли­че­ства за­про­сов, при ра­вен­стве ко­ли­че­ства за­про­сов — по воз­рас­та­нию но­ме­ров задач. При­мер вы­ход­ных дан­ных для при­ведённого выше при­ме­ра вход­ных дан­ных:
1 3
2 2
5 1


четверг, 13 марта 2014 г.

Вариант 10
 На вход программы подаются прописные латинские буквы, ввод этих символов заканчивается точкой. Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять, можно ли переставить эти буквы так, чтобы получился палиндром (палиндром читается одинаково слева направо и справа налево). Программа должна вывести ответ «Да» или «Нет», а в случае ответа «Да» – еще и сам полученный палиндром (первый в алфавитном порядке). 
Пример входной строки:
GAANN.
Пример выходных данных:
Да ANGNA

Вариант 20
Дан целочисленный массив из 31 элемента, в котором записаны значения температуры воздуха в марте. Элементы массива могут принимать значения от (–20) до 20. Опишите на русском языке или на одном из языков программирования алгоритм, который подсчитывает и выводит среднюю температуру по всем дням, когда была оттепель (температура поднималась выше нуля). Гарантируется, что хотя бы один день в марте была оттепель. Исходные данные объявлены так, как показано ниже. Использовать другие переменные запрещается.
const N = 31;
var A: array[1..N] of integer;
    i, x, y: integer;
    s: real;
begin
  for i:=1 to N do readln(A[i]);
  ...
end.

среда, 5 марта 2014 г.

Решение задач по программированию

1)      На ускорителе для большого числа частиц производятся замеры скорости каждой из них. Все скорости положительны. Чтобы в документации качественно отличать одну серию эксперимента от другой каждую серию решили характеризовать числом равным минимальной чётной сумме из всех сумм пар скоростей различных частиц. Если чётная сумма отсутствует, то характеристикой будет являться просто минимальная сумма.
Вам предлагается написать эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования), которая будет обрабатывать результаты эксперимента, находя искомую величину. Следует учитывать, что частиц, скорость которых измерена, может быть очень много, но не может быть меньше двух.
Перед текстом программы кратко опишите используемый вами алгоритм решения задачи.
На вход программе в первой строке подается количество частиц N. В каждой из последующих N суток записано одно натуральное число не превышающее 30000.
Пример входных данных:
5
123
1000
12
2548
12
Программа должна вывести характеристику данной серии экспериментов.
Пример выходных данных для приведенного выше примера входных данных:
24
2)  На электронную почту Вам пришло письмо, подписанное аббревиатурой (первыми буквами фамилии, имени и отчества (далее - ФИО) отправителя). Аббревиатура оказалась Вам незнакома. У Вас есть список всех предполагаемых отправителей, взятый из ранее полученных писем, среди которых различных людей с такой аббревиатурой не больше 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
3)      На вход программе подаются сведения о пассажирах, желающих сдать свой багаж в камеру хранения на заранее известное время до полуночи. В первой строке сообщается число пассажиров N, которое не меньше 3, но не превосходит 1000; во второй строке – количество ячеек в камере хранения K, которое не меньше 10, но не превосходит 1000. Каждая из следующих N
строк имеет следующий формат:
<Фамилия> <время сдачи багажа> <время освобождения ячейки>,
где <Фамилия> – строка, состоящая не более чем из 20 непробельных символов; <время сдачи багажа> – через двоеточие два целых числа, соответствующие часам (от 00 до 23 – ровно 2 символа) и минутам (от 00 до 59 – ровно 2 символа); <время освобождения ячейки> имеет тот же формат. <Фамилия> и <время сдачи багажа>, а также <время сдачи багажа> и <время освобождения ячейки> разделены одним пробелом. Время освобождения больше времени сдачи.
Сведения отсортированы в порядке времени сдачи багажа. Каждому из пассажиров в камере хранения выделяется свободная ячейка с минимальным номером. Если в момент сдачи багажа свободных ячеек нет, то пассажир уходит, не дожидаясь освобождения одной из них.
Требуется написать программу (укажите используемую версию языка программирования, например Borland Pascal 7.0), которая будет выводить на экран для каждого пассажира номер ему предоставленной ячейки (можно сразу после ввода данных очередного пассажира). Если ячейка пассажиру не предоставлена, то его фамилия не печатается.
Пример входных данных:
3
10
Иванов 09:45 12:00
Петров 10:00 11:00
Сидоров 12:00 13:12
Результат работы программы на этих входных данных:
Иванов 1
Петров 2
Сидоров 1
4)      На плоскости дан набор точек с целочисленными координатами. Необходимо найти треугольник наибольшей площади с вершинами в этих точках, одна из сторон которого лежит на оси OX. Напишите эффективную, в том числе по памяти, программу, которая будет решать эту задачу. Размер памяти, которую использует Ваша программа, не должен зависеть от длины переданной последовательности чисел. Укажите используемый язык программирования и его версию.
В первой строке вводится одно целое положительное число – количество точек N. Каждая из следующих N строк содержит два целых числа – сначала координата х, затем координата у очередной точки.
Программа должна вывести одно число – максимальную площадь треугольника, удовлетворяющего условиям задачи. Если такого треугольника не существует, программа должна вывести ноль.
Пример входных данных:
5
0 0
0
3 3
5 5
-6 -6
Пример выходных данных для приведенного выше примера входных данных:
6
5)      На плоскости дай набор точек с целочисленными координатами. Необходимо найти такой треугольник наибольшей площади с вершинами в этих точках, у которого нет общих точек с осью Оу, а одна из сторон лежит на оси Ох.
Напишите эффективную, в том числе по памяти, программу, которая будет решать эту задачу. Размер памяти, которую использует Ваша программа, не должен зависеть от количества точек.
Перед текстом программы кратко опишите используемый алгоритм решения задачи и укажите используемый язык программирования и его версию.
Описание входных данных
В первой строке вводится одно целое положительное число - количество точек N.
Каждая из следующих N строк содержит два целых числа - сначала координата х, затем координата у очередной точки. Числа разделены пробелом.
Описание выходных данных
Программа должна вывести одно число - максимальную площадь треугольника, удовлетворяющего условиям задачи. Если такого треугольника не существует, программа должна вывести ноль.
Пример входных данных:
8
-10 0
2 0
0 4
3 3
7 0
5 5
4 0
9 -9
Пример выходных данных для приведённого выше примера входных данных:
22.5
6)      Соревнования по игре «Тетрис-онлайн» проводятся по следующим правилам.
Каждый участник регистрируется на сайте игры под определённым игровым именем. Имена участников не повторяются.
Чемпионат проводится в течение определённого времени. В любой момент этого времени любой зарегистрированный участник может зайти на сайт чемпионата и начать зачётную игру. По окончании игры её результат (количество набранных очков) фиксируется и заносится в протокол.
Участники имеют право играть несколько раз. Количество попыток одного участника не ограничивается.
Окончательный результат участника определяется по одной игре, лучшей для данного участника.
Более высокое место в соревнованиях занимает участник, показавший лучший результат.
При равенстве результатов более высокое место занимает участник, раньше показавший лучший результат.
В ходе соревнований заполняется протокол, каждая строка которого описывает одну игру и содержит результат участника и его игровое имя. Протокол формируется в реальном времени по ходу проведения чемпионата, поэтому строки в нём расположены в порядке проведения игр: чем раньше встречается строка в протоколе, тем раньше закончилась соответствующая этой строке игра.
Напишите эффективную, в том числе по памяти, программу, которая по данным протокола определяет победителя и призёров. Гарантируется, что в чемпионате участвует не менее трёх игроков.
Перед текстом программы кратко опишите алгоритм решения задачи и укажите используемый язык программирования и его версию.
Описание входных данных
Первая строка содержит число N- общее количество строк протокола. Каждая из следующих N строк содержит записанные через пробел результат участника (целое неотрицательное число, не превышающее 100 миллионов) и игровое имя (имя не может содержать пробелов). Строки исходных данных соответствуют строкам протокола и расположены в том же порядке, что и в протоколе.
Гарантируется, что количество участников соревнований не меньше 3.
Описание выходных данных
Программа должна вывести имена и результаты трёх лучших игроков по форме, приведённой ниже в примере.
Пример входных данных:
9
69485 Jack
95715 qwerty
95715 Alex
83647 М
197128 qwerty
95715 Jack
93289 Alex
95715 Alex
95715 M
Пример выходных данных для приведённого выше примера входных данных:
1 место. qwerty (197128)
2 место. Alex (95715)

3 место. Jack (95715)

вторник, 4 марта 2014 г.

Задание для 11Д на 4 марта

Задание: часть А и В выполнить на сайте. Часть С (С1, С2, С3), выполнить на бумаге, работы сдать учителю.

Задание для 8Д на 4 марта 2013


Задачи из Задачника Семакина, том 1, страницы 262 - 266
№№ 5, 7, 10, 14, 19, 21, 27, 31, 38, 43;
дополнительные задания №№32,34,42,51,


Примечание. Расстояние между двумя точками A и B (см. рисунок) вычисляется по формуле: