아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

타원 교집합

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

요약
중심이 같고 장축이 서로 수직인 두 타원이 주어질 때, 두 타원 교집합의 넓이를 0.001 이내 오차로 계산한다.
난이도

어려움10점 중 8점

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

문제

최근 천문학자들은 A와 B라는 특이한 행성 한 쌍을 발견했다. 행성은 보통 타원 궤도를 따라 움직이며, A와 B도 마찬가지다. 그런데 두 행성의 궤도에는 특별한 성질이 있다.

  1. 두 궤도는 같은 평면에 있고 중심이 같다.
  2. 각 궤도의 두 초점을 이은 선분은 서로 수직이다.

중심을 점 O, 궤도 A의 초점을 F1, F2라 하면, 점 O를 원점으로 하고 F1과 F2를 지나는 직선을 x축으로 하는 직교좌표계를 세울 수 있다.

다음은 한 예시다.

그림 1: 궤도의 예시

천문학자들은 행성에 대해 더 알고 싶어졌고, 우선 두 궤도의 교집합 넓이를 계산하기로 했다. 그런데 교집합 넓이를 계산하는 일은 너무 복잡해서 그들의 능력으로는 어렵다. 그래서 그들은 프로그래밍에 재능이 있는 당신에게 도움을 청했다.

위 조건을 만족하는 두 타원 궤도의 정보가 주어질 때, 두 궤도의 교집합 넓이를 계산하라.

입력

입력은 여러 테스트 케이스로 이루어질 수 있다. 첫 줄에는 아래에 주어지는 테스트 케이스의 수를 나타내는 양의 정수 n (n ≤ 100)이 주어진다. 각 테스트 케이스는 두 줄로 이루어지며, 첫 줄은 궤도 A, 둘째 줄은 궤도 B의 정보이다. 각 줄에는 두 양의 정수 a와 b (a, b ≤ 100)가 주어지며, 이는 타원의 방정식 x2/a2 + y2/b2 = 1을 나타낸다. 궤도 A의 초점은 x축 위에, 궤도 B의 초점은 y축 위에 있음이 보장된다.

출력

각 테스트 케이스마다 교집합의 넓이를 나타내는 실수 하나를 한 줄에 출력한다. 오차는 0.001까지 허용된다.

예제1

  1. 예제 1

    입력
    1
    2 1
    1 2
    
    예상 출력
    3.709