Проблемки с математикой
Решал тут тестовое задание на одном из ресурсов по изучению 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 шт):
За один день улитка проползает в сумме 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