Задача 'Кузнечик'

Кузнечик прыгает по горизонтальной прямой. Если кузнечик находится в координате x, то он может прыгнуть либо вправо, либо влево на расстояние A, и оказаться либо в координате x+A, либо в координате x-A соответственно. В точке с координатой 0 находится высокий забор, через который кузнечик перепрыгнуть не может. Если какой-то особенно смелый кузнечик пытается перепрыгнуть его и оказаться в точке с отрицательными координатами, то он сталкивается с забором и остаётся в точке 0. Кузнечик оказался в точке с координатой P, а его дом находится в точке с координатой H. Помогите определить, сможет ли кузнечик добраться до своего дома и, если да, то какое минимальное количество прыжков ему придётся для этого сделать?

Мой код:

A,x,H=map(int,input().split())

deltaHome = H-x
if deltaHome % A == 0:
    stepsH = deltaHome // A 
if x % A == 0:
    steps0 = x // A 

Но работает неправильно, можете помочь пожалуйста?


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

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

Ну конечно, неправильно, ведь логики после if deltaHome % A == 0 никакой нет.

Если нельзя напрямую допрыгать, тогда проверяем, находится ли дом на кратном A расстоянии от нуля. Если нет - всё, отпрыгался. Если да, то придётся сделать прыжки до нуля (округление вверх), потом до дома.

if deltaHome % A == 0:
    return deltaHome // A 

if H % A == 0:
    return (x + A - 1) // A  +  H // A
else:
    return None
→ Ссылка