Чтобы наш снаряд (пуля, мяч или что-то еще) попало в цель, нужно чтобы высота подъема снаряда совпала с высотой, на которой расположена цель, и чтобы дальность полета совпала с заданным расстоянием. Иначе снаряд может улететь выше или ниже цели или не долетать.
Воспользуемся формулами по равнозамедленному движению.
program zadacha;
const
g=9.8;
var
h,L,a,V,S,h1:real;
begin
writeln('vvedite visotu i dalnost celi');
readln(h,L);
writeln('vvedite ugol, skorost snariada');
readln(a,V);
a:=a*pi/180;
h1:=int(( sqr(V)* sqr(sin(a))) / (2*g));
S:=int((sqr(V)*sin(2*a))/g);
if (S=L) and (h1=h) then writeln('popal') else writeln('ne popal');
end.
# Python 3.X
'''
Вводятся четыре числа:
xa, ya: координаты ферзя
xb, yb: координаты другой фигуры
Координаты - целые числа
в интервале от 1 до 8.
Вывод - булево значение:
сможет ли ферзь побить фигуру
за 1 ход.
'''
def hits(xa, ya, xb, yb) -> bool:
'''
Проверка аргументов.
'''
args = (xa, ya, xb, yb)
if any([not 1 <= z <= 8 for z in args]):
raise ValueError("Неверные координаты!")
'''
На одной прямой.
'''
if xa == xb or ya == yb:
return True
'''
Северо-западная диагональ.
'''
x_nw, y_nw = xa, ya
while x_nw > 1 and y_nw > 1:
x_nw -= 1
y_nw -= 1
if x_nw == xb and y_nw == yb:
return True
'''
Юго-восточная диагональ.
'''
x_se, y_se = xa, ya
while x_se < 8 and y_se < 8:
x_se += 1
y_se += 1
if x_se == xb and y_se == yb:
return True
'''
Юго-западная диагональ.
'''
x_sw, y_sw = xa, ya
while x_sw > 1 and y_se < 8:
x_sw -= 1
y_sw += 1
if x_sw == xb and y_sw == yb:
return True
'''
Северо-восточная диагональ.
'''
x_ne, y_ne = xa, ya
while x_ne < 8 and y_se > 1:
x_ne += 1
y_ne -= 1
if x_ne == xb and y_ne == yb:
return True
return False # если не бьет
inp = [int(x) for x in input().split()]
if hits(*inp):
print('YES')
else:
print('NO')