B - Billiards
えっえっ?解説読んでも見ても全く意味不明なんですけど、、
って方他にいないですかね。(いないか)
僕は全くもって意味不明だったのでメモします。
まず、この問題を特には数学2の知識が必要です。
内分点の求め方
詳しくは、下記の動画を見てください。めっちゃわかりやすいです
上記にあるように、内分点の求め方として、下記の方程式が使用されます
これは公式です。この公式がなぜ成立するのか疑問に思ったけど、それはちょっと別の話だし、偉い人が考えたこういう公式はそのまんま利用したらいいや、となっちゃいました
ようやく本題
上記が理解できて、ようやく本題に入れます。
0の軸を元に反射させたものを下にコピーしているだけの直線ですから、0のx軸と交わった点部分の角度は等しくなります。
それゆえ左右の三角形において、相似が働くようです。
相似が働くと何がいいの?というと、さきほどのm:n
の比率が使えるようになります。
今回は、このmとnの高さを比率として、さきほどの式にあてはめます。
問題に変数名を当てはめてみましょう
上記になります。ここまでくればコードにするのは何も難しくありません。
import java.util.Scanner; public class Main205 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double sx = sc.nextDouble(); double sy = sc.nextDouble(); double gx = sc.nextDouble(); double gy = sc.nextDouble(); sc.close(); System.out.println((sx*gy+gx*sy)/(sy+gy)); } }