`Всеукраїнський центр проведення олімпіад в мережі Інтернет

Шановні учасники олімпіади!

Пропонуємо вашій увазі задачі 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 строчок по < /FONT>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

© LIKT 1998-2024