Годинник | |
Завдання 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 строчок по < /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
|
| |