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

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

피자!

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

요약
단위 원 위에 극좌표로 주어진 조각들을 같은 각도로 자를 때, 각 조각이 같은 개수의 조각을 담도록 하는 최대 조각 수를 구한다.
난이도

보통10점 중 6점

유형
수학, 정수론, 기하, 정렬
정답자
아직 제출이 없습니다

문제

결과 발표가 모두 끝나고, 대회에서 가장 중요한 순간인 피자를 먹는 시간이 되었다.

그런데 피자가 이상하게 생긴 탓에 또 코딩을 해야 한다.

피자는 반지름이 11인 원 모양이고, 그 위에는 너겟 몇 개가 올려져 있다.

피자를 자를 때는 다음 세 조건을 모두 만족해야 한다.

  • 자르는 선은 반드시 피자의 중심에서 바깥으로 뻗는 반지름을 따라야 한다.
  • 어떤 너겟도 잘라서는 안 된다.
  • 다 자른 뒤 생긴 모든 조각은 크기가 같아야 하고, 각 조각에 올려진 너겟의 수도 모두 같아야 한다.

대회가 끝났는데도 겨우 너겟 때문에 다툼이 벌어질 판이다. 참가자가 많으니 피자를 가능한 한 많은 조각으로 자르고 싶다. 위 조건을 지키면서 피자를 최대 몇 조각까지 나눌 수 있는지 구하여라.

피자를 아예 자르지 않아도 된다. 이 경우 피자는 11조각이 된다.

입력

첫 줄에 테스트 케이스의 수 KK가 주어진다.

각 테스트 케이스의 첫 줄에는 너겟의 수 NN (1≤N≤2001 \le N \le 200)이 주어진다.

이어지는 NN개의 줄에는 각 너겟의 위치가 두 실수 α\alpha와 rr로, 공백으로 구분되어 주어진다.

α\alpha는 피자의 중심에서 반시계 방향으로 잰 각도이며 0≤α<2π0 \le \alpha < 2\pi를 만족한다.

rr는 피자의 중심에서 너겟까지의 거리이며 0<r≤10 < r \le 1을 만족한다. (피자의 반지름은 11이다.)

너겟은 크기가 없는 점으로 생각하며, 완전히 같은 위치에 놓인 두 너겟은 없다. (단, 각도 α\alpha가 같고 거리 rr만 다른 너겟은 있을 수 있다.)

출력

각 테스트 케이스마다 먼저 Data Set K: 를 출력한 뒤 (여기서 KK는 테스트 케이스 번호), 피자를 나눌 수 있는 최대 조각 수 ss에 대해 s slices를 출력한다.

예를 들어 첫 번째 테스트 케이스의 답이 11이라면 Data Set 1: 1 slices를 출력한다.

서로 다른 테스트 케이스의 출력 사이에는 빈 줄을 하나 출력한다.

힌트

출력의 문법적인 어색함(예: 조각이 하나여도 1 slices로 출력)은 신경 쓰지 않아도 된다.

예제6

  1. 예제 1

    입력
    2
    2
    1.57 0.5
    1.57 0.7
    4
    0.7 0.9
    1.5 0.1
    1.8 0.5
    3.05 1.0
    
    예상 출력
    Data Set 1: 1 slices
    
    Data Set 2: 2 slices
    
  2. 예제 2

    입력
    1
    1
    2.0 0.5
    
    예상 출력
    Data Set 1: 1 slices
    
  3. 예제 3

    입력
    1
    4
    0.5 0.5
    2.0 0.4
    3.5 0.6
    5.0 0.9
    
    예상 출력
    Data Set 1: 4 slices
    
  4. 예제 4

    입력
    1
    3
    1.0 0.5
    1.1 0.6
    1.2 0.7
    
    예상 출력
    Data Set 1: 1 slices
    
  5. 예제 5

    입력
    1
    2
    1.0 0.5
    4.1416 0.5
    
    예상 출력
    Data Set 1: 2 slices
    
  6. 예제 6

    입력
    1
    3
    0.5 0.5
    2.5 0.5
    4.5 0.5
    
    예상 출력
    Data Set 1: 3 slices