Емблема центру  www.olymp.vinnica.ua     netoi.org.ua
Центр олімпіад школярів в Iнтернеті
Likt-PMG17
м.Вiнниця


Годинник
 
Задания 2-го тура олимпиады.

Предисловие оргкомитета и жюри

Уважаемые участники олимпиады!

Предлагаем вашему вниманию задачи 2-го тура. Максимальное число баллов, которые можно набрать в этом туре - 200. Письма с решениями, оформленные по правилам(!), отправляйте по адресу olymp@olymp.vinnica.ua в любое удобное для вас время с 22 октября 2000 г. по 7 ноября 2000 г. Наш робот сразу вам сообщит, получено ли ваше письмо. Если по какой-то причине ваше решение не компилируется, робот сообщит вам об этом и попробует объяснить причину. В этом случае можете отправить его повторно. Если же решение будет принято, повторные решения одной и той же задачи робот рассматривать не будет.

Идя навстречу большому числу ваших просьб, мы продолжим прием решений задач 1-го тура до 25 октября, а 28 октября планируем огласить результаты 1-го тура (поместить на сервере www.olymp.vinnica.ua и разослать участникам). Третий тур будет рассылаться предположительно 4 ноября 2000 г.

Оргкомитет и жюри олимпиады.


Задача BANK2

(предоставлена коммерческим банком)

В нашем банке два отделения. К началу рабочего дня в каждом из них достаточно средств для проведения денежных операций. А операции мы проводим нетрадиционно – сумма денег, перечисляемых за одну операцию, всегда одна и та же. Мы можем выдавать деньги клиентам, получать их от клиентов и переводить из одного нашего отделения в другое. В конце каждого дня директор банка требует отчет о том, как изменились наши активы (то есть с прибылью мы или убытком). Вчера впервые оказалось так, что ни прибыли, ни убытков не было мы остались при своих… Я долго не верил в это, перепроверял каждую операцию и их следование друг за другом. Сколькими возможными способами могли быть проведены операции.

Ограничения:

1<=N<=15, где N – количество проведенных операций.

Ввод-вывод :

Программа должна ввести с клавиатуры число проведенных операций, и вывести на экран количество вариантов.

Пример:

Ввод> 2

Вывод> 6

[Было проведено две операции. Вариантов проведения: 6.

Эти варианты:

1. 1) Перевод из первого отделения во второе, 2) Перевод из первого во второе;

2. 1) Перевод из первого во второе, 2) Перевод из второго в первое;

3. 1) Перевод из второго в первое, 2) Перевод из первого во второе;

4. 1) Перевод из второго в первое, 2) Перевод из второго в первое;

5. 1) Выдача денег, 2) Получение денег;

6. 1) Получение денег, 2) Выдача денег.]

 


Задача MILITARY2

(вновь предоставлена министерством обороны)

 

Герой задачи Military, сержант с необычайными математическими способностями, решил все-таки обучить новобранцев становиться в колонну по одному. Он взял шестерых бойцов разного роста, и грозным голосом крикнул "Становись!". Стали новобранцы, разумеется, вновь, как попало. Но сержант на этот раз решил действовать строго по науке. Он долго и старательно объяснял широко открывшим рот новобранцам смысл новых команд. По команде "1" первые четыре новобранца должны перестроится в обратном порядке, по команде "2" перестроится в обратном порядке должны новобранцы, начиная со второго и, заканчивая пятым, а по команде "3" в обратном порядке перестраиваются те, кто в колонне занимает места, начиная с третьего по шестое. Сержант громовым голосом выкрикивал номера команд в какой-то одному ему известной последовательности, а испуганные рекруты аккуратно их выполняли. В конечном итоге колонна стала такой, какой она должна быть по уставу, т.е. солдаты стояли по росту.

Сколько команд и в какой последовательности подавал сержант?

Ограничения:

Рост новобранцев измеряется в сантиметрах и не превышает 250.

Решение всегда существует, т.е. солдат всегда можно выстроить по росту. При этом первым должен стоять самый высокий, а последним – самый низкий солдат. Если существует несколько решений, можно вывести любое из них.

Ввод-вывод:

Программа должна прочитать с клавиатуры шесть чисел – рост шестерых новобранцев. Программа должна вывести в первой строке количество команд, а в следующих строках – сами команды.

Пример:

Ввод> 170 172 178 196 189 185

Вывод> 3

Вывод> 1

Вывод> 2

Вывод> 3

[В этом примере новобранцы перемещаются так:

Начальное положение: 170 172 178 196 189 185;

После первой команды: 196 178 172 170 189 185;

После второй команды: 196 189 170 172 178 185;

После третьей команды: 196 189 185 178 172 170.]


Задача DOMINO2

(предоставлена дворовым клубом любителей игры в "козла")

Один наш активист Семен Семенович Настойкин, коротая время в ожидании очереди на игру, учудил следующее. Из стандартного набора домино он изъял все кости, на одной половинке которых есть более чем N точек. Из оставшихся костей он сложил на столе прямоугольник, а потом начертил все это в виде таблицы, каждая ячейка которой половинка кости домино, а содержимое число точек на этой половинке. Семен Семенович показал нам рисунок и предложил сложить исходную картинку из костей, которыми мы играли. Ненужные кости мы отложили в сторону быстренько, а вот разложить оставшиеся не можем уж который день. Даже в "козла" забросили играть все раскладываем. Помогите нам.

Ограничения:

1<=N<=6. Решение всегда существует. Если существует несколько решений, достаточно найти любое из них.

Ввод/вывод:

Программа должна прочитать с клавиатуры: с первой строки – число N, со второй строки размеры таблицы H и W, а со следующих H строк по W чисел – количество точек на половинке кости домино.

Программа должна вывести на экран H строк по W чисел в каждой. Каждое число – код той кости домино, которой принадлежит половинка, находящаяся в данной клеточке таблицы. Кость "X:Y" кодируется числом X*10+Y, если X<=Y.

Пример:

Ввод> 2

Ввод> 3 4

Ввод> 0 0 1 2

Ввод> 0 1 1 1

Ввод> 0 2 2 2

Вывод> 0 1 11 12

Вывод> 0 1 11 12

Вывод> 2 2 22 22


Задача GAME2

(вновь предоставлена читателем популярных книг по информатике)

Предлагаю Вашей программе поиграть со мной в такую игру. Я (или Ваша программа) называет натуральное число от 2 до 9, противник умножает его на любое натуральное число от 2 до 9, тот, кто начинал опять умножает результат на натуральное число от 2 до 9, и т.д. Выигрывает тот, кто первый получит произведение, больше заданного положительного числа С.

Ограничения:

10<=C<=50000

Ввод/вывод:

Сперва программа должна прочитать с клавиатуры два числа: C и P, где P равно 1, если программа должна начинать игру, или 2, когда программа должна играть за второго игрока. Затем программа должна поочередно выводить свой ход или вводить ход противника с клавиатуры. Программа должна закончить работу, когда игра завершится.

Пример:

Ввод> 50 1

Вывод> 3

Ввод> 4

Вывод> 5

[Программа начала игру и победила, получив последним ходом произведение 3*4*5=60>50]


Задача GRAPH2

(предоставлена дизайнером фирмы "GraphSoft")

Получил я вчера задание нарисовать картинку размером H на W пикселей, обертку для конфет "Сосиска в шоколаде". Творчество процесс тонкий, вдохновение требуется. А тут как топором отрубило, ничего не выходит… От безысходности я нарисовал на белом экране красную замкнутую линию, толщиной в один пиксель. Сколько пикселей оказалось в области, ограниченной красной линией?

Для тех, кто не знаком с компьютерной графикой пиксель имеет форму квадратика.

Ограничения:

1<H,W<=100

Каждый красный пиксель имеет общие стороны ровно с двумя красными пикселями.

Ввод/вывод:

Программа должна прочитать с клавиатуры: с первой строки – два числа H и W, а со следующих H строчек по W чисел. Красный пиксель обозначается единицей, белый – нулем.

Программа должна вывести на экран результат - число пикселей, ограниченных линией.

Пример:

Ввод> 5 7

Ввод> 0 0 0 1 1 1 0

Ввод> 0 1 1 1 0 1 0

Ввод> 0 1 0 0 0 1 0

Ввод> 0 1 1 1 1 1 0

Ввод> 0 0 0 0 0 0 0

Вывод> 4


© Всеукраїнський віртуальний центр олімпіад школярів "ОЛІМП"