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

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

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

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

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

Задача тижня 2.12.11 – 11.12.11

Zadacha_tyzhnya_khopka_zadacha_tyzhnyaZadacha_tyzhnya_khopka_2_analiz_rezultativZadacha_tyzhnya_khopka_3_reytyngZadacha_tyzhnya_khopka_4_arhiv

 

Поштар

 

Поштар має доставити телеграму на задану адресу.

1. Створіть програму визначення номеру під’їзду Pd і номеру поверху Pv, де розташована квартира з номером N, якщо будинок має m поверхів і k квартир на кожному поверсі.

Вхідні дані

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

Вихідні дані

Значення Pd і Pv – цілі числа, виводяться на екран.

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

 

NmkPdPv
1125413
24864
39992
4128166
5261247

 

 

Аналіз розв’язку задачі «Поштар»


Звичайно, існує декілька способів розв’язання цієї популярної задачі. Проте найбільш раціональний розв’язок можна одержати, помітивши, що номер під’їзду Pd залежить від результату цілочисельного ділення (операція div) заданого номеру квартири N на кількість квартир у під’їзді (k*m), а номер поверху Pv – від результату цілочисельного ділення порядкового номеру квартири в під’їзді на кількість квартир на поверсі k.

Отже, спочатку слід визначити номер під’їзду, потім – поверху.

1. Обчислимо номер під’їзду.

На перший погляд, здається, що можна скористатися формулою:

Pd = N div (k * m)

Але уважний розгляд цієї формули показує, що

а) одержимо результат для нумерації під’їздів, починаючи з нуля, а не з одиниці. Для корекції результату вводимо у вираз доданок 1:

Pd = N div (k * m) + 1;

б) одержимо помилкові результати для останніх квартир в кожному під’їзді, номер яких є кратним (k * m). Для корекції результату зменшуємо на 1 номер квартири, тобто переходимо до їх нумерації, починаючи з нуля. Таким чином, остаточно формула для обчислення номеру під’їзду набуває вигляду:

Pd = (N – 1) div (k * m) + 1,

2. Обчислимо номер поверху.

Очевидно, що порядковий номер квартири N у під’їзді Pd задається виразом:

N – (k * m) * (Рd – 1).

Для обчислення номеру поверху застосовуємо дії, аналогічні п.1, а саме: додаємо до виразу 1, щоб перейти до нумерації поверхів з одиниці, і зменшуємо порядковий номер квартири на 1, щоб уникнути помилок з кожною останньою квартирою на поверсі. Отже, одержуємо таку формулу для обчислення номеру поверху:

Pv = (N – (k * m) * (Рd – 1) – 1) div k + 1

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

NmkPdPv
1125413
2486426
3999265
412816626
5216247214

 

Результати розв’язку задачі «Поштар»

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

Учасник Кількість балів
1Ивахненко Олег1
2ALEX Z1
3Kolgatin Andrey4
4RomaN4