100 atcoder#ABC183B. [ABC183B] Billiards

[ABC183B] Billiards

题目描述

高橋君は 2 2 次元平面上でビリヤードをしています。x x 軸は壁になっており、球をぶつけると入射角と反射角が等しくなるように球が跳ね返されます。

いま高橋君の球が (Sx,Sy) (S_x,S_y) にあります。ある座標を狙って球を撞くと、球はその座標へ向かって直線的に転がっていきます。

x x 軸で球をちょうど 1 1 回反射させたのち、(Gx,Gy) (G_x,G_y) を通過させるためには、x x 軸のどこを狙えば良いでしょうか?

输入格式

入力は以下の形式で標準入力から与えられる。

Sx S_x Sy S_y Gx G_x Gy G_y

输出格式

狙う座標を (x,0) (x,0) としたときの x x を出力せよ。

なお、想定解答との絶対誤差または相対誤差が 106 10^{-6} 以下であれば正解として扱われる。

题目大意

题意简述

已知一个球现在在坐标 (Sx,Sy)(S_x,S_y) 上,想要在 xx 轴上正好反弹一次,使球通过 (Gx,Gy)(G_x,G_y) ,问应该瞄准 xx 轴的哪个位置?

输入格式

一行四个整数,Sx,Sy,Gx,GyS_x, S_y,G_x,G_y

输出格式

假设应该瞄准 (x,0)(x,0) ,输出 xx 。误差不超过 10610^{-6}

1 1 7 2
3.0000000000
1 1 3 2
1.6666666667
-9 99 -999 9999
-18.7058823529

提示

制約

  • 106  Sx, Gx  106 -10^6\ \leq\ S_x,\ G_x\ \leq\ 10^6
  • 0 < Sy, Gy  106 0\ <\ S_y,\ G_y\ \leq\ 10^6
  • Sx  Gx S_x\ \neq\ G_x
  • 入力はすべて整数

Sample Explanation 1

図のように (3,0) (3,0) を狙って球を撞くことで (7,2) (7,2) を通過させることができます。 ![図](https://img.atcoder.jp/ghi/c9595d59f1139b808d4cf3d31d6b48ee.png)

Sample Explanation 2

![図](https://img.atcoder.jp/ghi/4f2c808fddc9bb349999f8969996ebb9.png)

Sample Explanation 3

絶対誤差または相対誤差が 106 10^{-6} 以下のとき正解となります。