Проблемки с математикой

Решал тут тестовое задание на одном из ресурсов по изучению python. Выглядит оно так: Улитка ползет по вертикальному шесту высотой h метров, поднимаясь за день на a метров, а за ночь спускаясь на b метров. На какой день улитка доползет до вершины шеста?

Программа получает на вход натуральные числа h, a, b.

Программа должна вывести одно натуральное число. Гарантируется, что a>b

Решение составителя задания такое:

h = int(input())
a = int(input())
b = int(input())
print((h - a - 1) // (a - b) + 2)

у меня же получилось решить циклом. Мое решение менее изящно и более громоздко. Я до сих пор не понимаю откуда беруться цифры '-1' и '+2' в решении разраба. Может ли кто-нибудь мне объяснить что происходит и как вообще появилось это решение? Видимо я чего-то не понимаю в математике.


Ответы (1 шт):

Автор решения: Harry

За один день улитка проползает в сумме a-b метров. В последний день — проползя a метров, улитка достигает вершины. Т.е. если это n-й день, то (n-1)*(a-b) + a >= h, но (n-2)*(a-b) + a < h.

Дальше расписывать надо?

Update

Расписываем... Второе условие дает

h-a > (n-2)*(a-b)

или, поскольку все числа целые,

h-a-1 >= (n-2)*(a-b)

откуда, используя целочисленное же деление,

n = (h-a-1)//(a-b) + 2
→ Ссылка