플랫랜드의 관측점

시간 제한1초메모리 제한128 MB

요약
서로 겹치지 않는 세 원판이 주어질 때, 세 원판이 같은 각도로 보이는 점을 찾고 그중 각지름이 가장 큰 점을 출력한다.
난이도

보통10점 중 7점

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

문제

플랫랜드(Flatland)에서는 모든 것이 평평하다. 행성은 둥글지만 평평하다. 즉, 평면 위에 놓인 원판이다.

플랫랜드에 있는 세 행성의 중심 좌표와 반지름이 주어진다. 세 행성이 모두 같은 각도로, 다시 말해 각지름(angular diameter)으로 잰 겉보기 크기가 서로 같게 보이는 지점을 찾아라. 이러한 지점을 등관측점(isoobservation point) 이라고 부른다. 이런 점은 최대 두 개까지 존재할 수 있으며, 그중에서 행성의 각지름이 가장 큰 지점을 구하는 것이 목표다.

문제를 단순화하기 위해 다음을 가정해도 좋다.

  • 세 원판의 중심이 한 직선 위에 있지는 않다.
  • 세 원판은 서로 완전히 떨어져 있다(겹치지 않는다).
  • 원판은 투명하고 빛을 굴절시키지 않는다. 즉, 어떤 원판 앞에 다른 원판이 있더라도 각 원판은 그대로 보이며 겉보기 모양과 크기가 변하지 않는다.
  • 입력은 약간의 반올림 오차가 있더라도 그러한 점의 존재 여부를 판정할 수 있도록 주어진다. 다만 계산은 배정밀도(double)로 하라.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 각 케이스는 한 줄에 주어진다. 각 줄에는 9개의 수가 있고, 원판 하나당 3개씩 대응한다. 각 3개 조는 원판 중심의 x, y 좌표와 그 원판의 반지름 r 이다.

입력은 9개의 0으로 이루어진 줄로 끝나며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다, 앞에서 설명한 등관측점의 x 좌표와 y 좌표를 각각 소수점 아래 둘째 자리까지 반올림하여 공백 하나로 구분해 출력한다. 그러한 점이 존재하지 않으면 No solution 을 출력한다.

예제3

  1. 예제 1

    입력
    10 10 1 30 30 1 50 10 1
    0 30 1.0 30 0 1.0 40 40 1.0
    10 30 1.0 31 0 1.0 42 43 1.0
    10 42 1 62.8 62.8 1 52.5 -25.3 1
    10 42 1.1 62.8 62.8 1.2 52.5 25.3 25
    0 0 0 0 0 0 0 0 0
    
    예상 출력
    30.00 10.00
    23.00 23.00
    31.58 22.76
    49.27 19.73
    No solution
    
  2. 예제 2

    입력
    0 0 1 10 0 1 0 10 1
    0 0 0 0 0 0 0 0 0
    
    예상 출력
    5.00 5.00
    
  3. 예제 3

    입력
    -10 -10 1 -10 10 1 10 -10 1
    0 0 0 0 0 0 0 0 0
    
    예상 출력
    0.00 0.00