Задача Billiards. Більярдний стіл має форму прямокутника mхn. У точку з координатами (0,0) поклали кулю та вдарили по ній так , що вона покотилася під кутом a до додатного напрямку осі оХ. У кутах з координатами (0,0),(0,n),(m,0),(m,n)
знаходяться лузи. Знайти, після скількох відбивань від стінок куля
опиниться в одній із луз або повідомити про те, що це не відбудеться.
Всі удари об стінки вважаються абсолютно пружними. Вважається, що в
момент удару куля не може впасти в лузу в точці (0,0).
Технічні умови Програма Billiards читає з пристрою стандартного вводу 4 натуральних числа m,n,p,q – розміри дошки та тангенс кута a(tga=p/q). Кожне з чисел не перевищує 1018. Програма виводить на пристрій стандартного виведення єдине число – кількість відбивань до потрапляння у лузу або -1 , якщо кулька ніколи туди не потрапить. Гарантується, що якщо відповідь існує, то вона не перевищує 1018.
Приклади
Введення 1 1 1 1
Виведення 0
Введення 4 2 1 1
Виведення 1
Пояснення
до прикладів. У першому прикладі куля відразу потрапить до лузи в точці
(1,1). У другому прикладі куля відіб’ється від верхньої стінки і
потрапить у лузу в точці (4,0).
|