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

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

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

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

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

Задача тижня 12.03.12 – 18.03.12

Zadacha_tyzhnya_khopka_zadacha_tyzhnyaZadacha_tyzhnya_khopka_2_analiz_rezultativZadacha_tyzhnya_khopka_3_reytyngZadacha_tyzhnya_khopka_4_arhiv

 

Послідовність

 

Задане двозначне число A доповнюємо, дописуючи до нього справа на кожному кроці суму двох останніх цифр числа, утвореного на попередньому кроці. Наприклад: 29 → 2911 → 29112 → 291123 → 2911235 →…

1. Створіть програму, що за заданим A визначає k-ту цифру числа, утвореного за описаним правилом.

Вхідні дані

Значення A – ціле число від 10 до 99, вводиться з клавіатури (з файлу або задається як константа);

значення k – ціле число від 1 до 10000, вводиться з клавіатури (з файлу або задається як константа).

Вихідні дані

Значення b k-та цифра числа, утвореного за описаним правилом, виводиться на екран.

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

 

Akb
12991
22299
331200
4501111
5772012
6855432
79910000

 

 

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

 

Для розв’язку даної задачі не потрібно зберігати всю послідовність чисел, достатньо лише на кожному кроці знати дві останні цифри в послідовності.

1. Введемо позначення довжини послідовності. У початковий момент m = 2.

2. Визначимо цифри числа A: першу v1 = A div 10; другу – v2 = A mod 10;

3. Знайдемо значення z – суму отриманих 2-х чисел v1 і v2: z = v1+v2;

4. Визначимо цифри наступного двозначного числа, яке слід піддати подальшій обробці. Якщо z – однозначне число (z div 10 = 0), то v1 = v2; v2 = z; і довжина послідовності m збільшиться на одиницю, інакше v1 = z div 10; v2 = z mod 10; і довжина послідовності m збільшиться на два.

5. Перевіряємо умову m >= k.

5.1. Якщо умова не виконується, повторюємо процедуру, починаючи з п.3

5.2. Якщо число m = k, то шукане значення дорівнює v2 (остання цифра послідовності).

5.3. Якщо число m > k, то шукане значення дорівнює v1 (передостання цифра послідовності).

m = 2;
v1 = A div 10;
v2 = A mod 10;
повторювати
z = v1+ v2;
якщо z div 10 = 0
то
початок
v1 = v2;
v2 = z;
m = m+1;
кінець
інакше
початок
v1 = z div 10;
v2 = z mod 10;
m = m+2;
кінець;
до m>= k;
якщо k = m то b = v2

інакше b = v1;

 

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

 

Akb
12991
222992
3312005
45011115
57720124
68554328
799100004

 

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

 

Учасник Кількість балів
1forsh34
2Kolgatin Andrey4
3Юрий Дончик4
4SERGEY4
5ALEX Z4