Задача з телеграма про 87 хвилин

Надрукувати

На дошці виписані числа від 1 до 2150.

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

 

Спочатку пробуйте самостійно, а потім можете перевірити свою відповідь, переглянути розумне математичне пояснення і код перебору на python

 

Логічне пояснення:

 

Всі числа, дві останні цифри яких - 86 або менше, за 87 хвилин встигнуть перетворитися в числа, що закінчуються на 00, і наступним кроком зменшаться в 100 разів. У підсумку все такі числа через 87 хвилин виявляться не більшими, ніж 2100/100 = 21.

Ті ж числа, які закінчуються на 87 і більше, за 87 хвилин зменшаться на 87. Найбільше з таких чисел - 2099, і воно через 87 хвилин перетвориться в 2012.

 

Код повного перебору на python - у мене вісім рядків:

 

s = [x for x in range(1,2151)]
for x in range(87):
    for i, j in enumerate (s):
        if j % 100 == 0:
            s[i] = j // 100
        else:
            s[i] = j - 1
print(max(s))