만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

삼각형에서 육각형으로

시간 제한2초메모리 제한512 MB

요약
삼각형 좌표가 주어질 때 각의 이등분선이 외접원과 만나는 점을 구하고, 그 선분과 변의 교점을 이용해 여섯 선분의 길이를 계산해 출력한다.
난이도

보통10점 중 7점

유형
기하, 수학, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

삼각형 ABCABC의 내접원의 중심을 II, 외접원을 OO라고 하자. 직선 AIAI, BIBI, CICI가 원 OO와 다시 만나는 점을 각각 MM, NN, PP라고 한다.

직선 NPNP가 변 ABAB, ACAC와 만나는 점을 각각 EE, FF라고 하자. 같은 방식으로 직선 MNMN이 변 ACAC, BCBC와 만나는 점을 GG, HH라고 하고, 직선 MPMP가 변 BCBC, ABAB와 만나는 점을 JJ, KK라고 한다.

세 꼭짓점 AA, BB, CC의 좌표를 읽어 선분 EFEF, FGFG, GHGH, HJHJ, JKJK, KEKE의 길이를 출력하는 프로그램을 작성하시오. 이때 ∣EF∣+∣GH∣+∣JK∣≤∣KE∣+∣FG∣+∣HJ∣|EF| + |GH| + |JK| \le |KE| + |FG| + |HJ|가 성립한다고 알려져 있으므로, 계산 결과를 검산하는 데 쓸 수 있다.

계산은 배정밀도 부동소수점으로 한다.

입력

첫 줄에 데이터 집합의 개수 PP가 주어진다 (1≤P≤100001 \le P \le 10000). 각 데이터 집합은 서로 독립이며 같은 방법으로 처리한다.

각 데이터 집합은 한 줄로 이루어진다. 이 줄에는 데이터 집합 번호 KK와 실수 세 개가 공백으로 구분되어 주어진다. 실수는 차례로 BB의 xx좌표 BxB_x, CC의 xx좌표 CxC_x, CC의 yy좌표 CyC_y이다. AA는 항상 원점 (0,0)(0, 0)이고 BB는 항상 xx축 위에 있으므로 By=0B_y = 0이다.

KK는 정수이고, 0<Bx≤10000 < B_x \le 1000, ∣Cx∣≤1000|C_x| \le 1000, 0<Cy≤10000 < C_y \le 1000이다. 세 점이 한 직선 위에 놓이는 일은 없다.

출력

각 데이터 집합마다 한 줄씩 출력한다. 한 줄에는 데이터 집합 번호 KK를 먼저 쓰고, 이어서 EFEF, FGFG, GHGH, HJHJ, JKJK, KEKE의 길이를 이 순서대로 소수점 아래 넷째 자리까지 반올림해 공백 하나로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    3
    1 3 2.5 3
    2 3 2 3
    3 3 4 3
    
    예상 출력
    1 0.9992 1.5332 0.9954 0.9300 1.1859 0.9048
    2 1.0450 1.3309 1.0257 1.0238 1.1358 0.9214
    3 0.8499 2.2397 0.8447 0.8959 1.3790 0.8063