BOJ 7124 Sarnased kolmnurgad

BOJ 7124 Sarnased kolmnurgad

문제 링크:

문제 내용

좌표 평면 위에 두 개의 삼각형이 주어집니다. 두 삼각형이 서로 닮음인지 판별하고, 그렇다면 첫 번째 삼각형이 두 번째 삼각형 대비 몇 배나 큰지 계산하여 출력하세요.

입력

첫 줄에는 첫 번째 삼각형의 세 꼭짓점에 대해 xx좌표와 yy좌표가 순서대로 주어집니다.

두 번째 줄에는 두 번째 삼각형의 세 꼭짓점에 대해 xx좌표와 yy좌표가 순서대로 주어집니다.

각 좌표의 값은 109-10^9 이상 10910^9 이하의 정수이며, 주어지는 좌표는 올바른 삼각형을 이룹니다.

출력

두 삼각형이 닮음이라면, 첫 번째 삼각형이 두 번째 삼각형보다 몇 배 큰지를 실수로 계산하여 출력합니다. 첫 번째 삼각형이 작다면 1보다 작은 값이 답이 됩니다. 이 값은 정답과 절대 또는 상대 오차가 10410^{-4} 이하이면 정답으로 인정됩니다.

두 삼각형이 닮음이 아니라면 -1을 출력합니다.

문제 풀이

스포일러

각도 계산은 실수 오차에 민감하기 때문에, SSS 닮음 판별을 사용할 수 있습니다. 각 삼각형에 대해 각 변의 제곱의 길이를 계산하고, 세 변의 길이를 오름차순으로 정렬합니다. 이때 첫 번째 삼각형의 세 변의 길이의 제곱을 a1,b1,c1a_1, b_1, c_1, 두 번째 삼각형의 세 변의 길이의 제곱을 a2,b2,c2a_2, b_2, c_2라고 하면, a1a2=b1b2=c1c2\frac{a_1}{a_2} = \frac{b_1}{b_2} = \frac{c_1}{c_2}이면 두 삼각형은 닮음이고, 아니라면 닮음이 아닙니다.

두 삼각형이 닮음일 경우, 변의 길이의 비율을 실수로 출력하면 됩니다.

Last updated on