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

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

꼬치 꿰기

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

요약
N개의 선분이 주어질 때, a와 b를 (0,1]에서 균일하게 뽑아 직선 ax+by=1과 만나는 선분이 i개일 확률을 구합니다. 확률은 기약분수로 나타내 mod 1000000007 값으로 출력합니다.
난이도

어려움10점 중 8점

유형
기하, 확률, 구현
정답자
아직 제출이 없습니다

문제

xy 평면에 NN개의 선분이 놓여 있다.

(0,1](0,1] 구간의 균등 난수에서 실수 aa, bb를 서로 독립으로 뽑는다. ax+by=1ax+by=1로 나타나는 직선과 공통점을 갖는 선분의 개수가 점수가 된다.

00 이상 NN 이하의 각 점수 ii에 대해, 그 점수를 얻을 확률을 pip_i라 하자. pip_i는 유리수이다. pip_i를 기약분수 yi/xiy_i/x_i로 나타냈을 때, yi≡ai×xi(mod1000000007)y_i \equiv a_i \times x_i \pmod{1000000007}을 만족하는 가장 작은 00 이상의 정수 aia_i를 구하라. 주어진 입력에 대해 그런 aia_i가 존재함이 보장된다.

입력

입력은 최대 100개의 데이터셋으로 이루어진다. 각 데이터셋은 다음 형식으로 주어진다.

N
x11 y11 x12 y12
...
xN1 yN1 xN2 yN2

NN (1≤N≤501 \le N \le 50)은 선분의 개수이다. 이어지는 NN개의 줄에는 각각 ii번째 선분의 두 끝점 (xi1,yi1)(x_{i1}, y_{i1}), (xi2,yi2)(x_{i2}, y_{i2})를 나타내는 정수 네 개 xi1,yi1,xi2,yi2x_{i1}, y_{i1}, x_{i2}, y_{i2}가 주어진다. 모든 좌표값은 1 이상 100 이하이다. 각 선분의 두 끝점은 서로 다르다. 입력의 끝은 0 한 개로 이루어진 줄이다.

출력

각 데이터셋에 대해 00 이상 NN 이하의 각 점수가 나올 확률을 구하고, 문제에서 정의한 aia_i를 공백으로 구분하여 한 줄에 출력하라.

예제1

  1. 예제 1

    입력
    1
    1 1 2 2
    3
    1 4 7 3
    5 4 5 2
    4 5 2 1
    5
    31 41 5 92
    65 35 89 7
    93 23 84 62
    84 62 93 23
    64 33 83 2
    0
    
    예상 출력
    625000005 375000003
    306211183 463800440 279241779 950746613
    569549369 651563025 897288531 7049563 987270468 887279073