Кафедра інформатики

Харківський національний педагогічний університет імені Г.С. Сковороди

Кафедра інформатики

Харківський національний педагогічний університет імені Г.С. Сковороди

Задача тижня 2011

Задача тижня 26.12.11 – 01.01.12

Zadacha_tyzhnya_khopka_zadacha_tyzhnyaZadacha_tyzhnya_khopka_2_analiz_rezultativZadacha_tyzhnya_khopka_3_reytyngZadacha_tyzhnya_khopka_4_arhiv

 

Оптом чи вроздріб?

 

Спортивна школа закуповує тенісні м’ячі. М’ячі продаються поштучно, наборами по 12 штук та коробками по 12 наборів у кожній. Ціна одного м’яча – 1.05 грн., одного набору – 10.25 грн., однієї коробки – 114 грн.

1. Створіть програму, яка за кількістю N потрібних м’ячів розраховує найбільш вигідний варіант купівлі, тобто обчислює кількість коробок (Pk), наборів (Pn) і окремих м’ячів (Pm), які слід придбати.

Наприклад, замість 11 м’ячів вигідніше купити набір, це обійдеться дешевше.

Вхідні дані

Значення N – невід’ємне ціле число, вводиться з клавіатури.

Вихідні дані

Значення Pk, Pn і Pm – невід’ємні цілі числа, виводяться на екран. н.

2. Заповніть тестову таблицю за результатами роботи програми

 

№NPk Pn Pm
111010
2118
3133
4134
5239

 

Аналіз розв’язку задачі «Оптом чи вроздріб?»

 

Уведемо позначення:

сm – ціна одного м’яча; сn – ціна одного набору; сk – ціна однієї коробки;

Pm – кількість окремих м’ячів; Pn – кількість наборів; Pk – кількість коробок.

З умови задачі зрозуміло, що ціна одного м’яча виходить найменшою, якщо купувати коробку; більшою, якщо купувати набір м’ячів; найбільшою, якщо купувати окремий м’яч.

Алгоритм складається з двох частин – прямого і зворотного ходу.

Прямий хід полягає в тому, щоб розподілити потрібну кількість м’ячів N між коробками (по 144 м’яча в кожній), наборами (по 12 м’ячів у кожному) і окремими м’ячами. Спочатку «заповнюємо» коробки, бо це найвигідніше, потім набори, а решта – окремі м’ячі.

Надамо змінній Pm первісне значення N:

Pm = N;

тоді кількість коробок становить:

Pk = Pm div 144;

кількість м’ячів, що залишилися поза коробками:

Pm = Pm mod 144;

з них утворимо набори, їх кількість становить:

Pn = Pm div 12;

кількість окремих м’ячів, що залишилися поза наборами:

Pm = Pm mod 12;

Отже, ми визначили потрібну кількість коробок Pk, наборів Pn і окремих м’ячів Pm.

Зворотний хід полягає в тому, щоб спробувати зробити нашу покупку ще вигіднішою. Якщо прямим ходом ми просувалися від коробок до окремих м’ячів, то зворотним – навпаки, від окремих м’ячів до коробок.

З’ясуємо спочатку, чи можна замість окремих м’ячів за ту ж ціну або дешевше купити їх набір:

якщо сn <= Pm * cm

то початок Pm = 0; Pn = Pn +1 кінець;

З’ясуємо далі, чи можна замість окремих м’ячів і наборів за ту ж ціну або дешевше купити коробку м’ячів:

якщо сk <= Pm * cm + Pn * сn

то початок Pm = 0; Pn = 0; Pk = Pk +1 кінець;

Тепер найвигідніший варіант покупки знайдено.

Тестова таблиця з результатами роботи програми:

 

№NPkPnPm
111010
21180100
31330111
4134100
5239180

 

Журі оцінило надіслані розв’язки наступним чином:

 

№Учасник Кількість балів
1Юрий Дончик4
2Kolgatin Andrey4
3RomaN4
4ALEX Z1
5Макс Синкевич1
6forsh3@mail.ru1