무한평면 색칠하기

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

요약
이동 벡터 N개가 주어질 때 원점에서 정수 조합으로 도달 가능한 격자점이 전체 격자점에서 차지하는 비율을 구한다.
난이도

어려움10점 중 8점

유형
정수론, 수학, 구현
정답자
아직 제출이 없습니다

문제

모든 격자점이 흰색으로 칠해진 좌표평면이 있다. 지호는 서 있는 점에서 (x_i,y_i)(x\_i, y\_i)만큼 혹은 (−x_i,−y_i)(-x\_i, -y\_i)만큼 움직일 수 있다.

이때, 지호가 원점 (0,0)(0, 0)에서 출발해서 도달할 수 있는 점을 모두 검은색으로 칠하자.

예를 들어, (2,0)(2,0), (2,2)(2,2), (0,2)(0,2)만큼 이동할 수 있는 경우 다음과 같다.

빨간 점은 원점, 파란 점은 원점에서 바로 이동할 수 있는 점이다. (−x_i,−y_i)(-x\_i, -y\_i)만큼 이동하는 것이 가능하므로, 녹색 점 또한 원점에서 바로 이동할 수 있는 점이다. 이외에 여러 번 이동해서 도달할 수 있는 점은 검은색으로 칠해져 있다. 이때, 흰색으로 칠해진 점을 제외하고는 모두 원점에서 도달할 수 있다.

이렇게 하면, 모든 격자점 중 칠해진 점의 비율을 유리수로 나타낼 수 있다. 위 예시에서는 좌푯값이 모두 짝수인 점만 칠해지므로 칠해진 점의 비율은 1/41/4이다.

이 유리수를 기약분수 형태로 나타내면 ab\frac{a}{b}라 할 때, (a⋅b−1) mod 1,000,000,007(a \cdot b^{-1}) \bmod 1\\,000\\,000\\,007을 출력하여라. 이때 1,000,000,0071\\,000\\,000\\,007은 소수이다.

단, 비율이 00인 경우 00을, 11인 경우 11을 출력하면 된다. 비율을 항상 유리수로 나타낼 수 있고, 이를 기약분수로 나타낸 형태 ab\frac{a}{b}에 대해 bb가 1,000,000,0071\\,000\\,000\\,007의 배수인 테스트케이스는 주어지지 않는다. 즉, 답이 항상 존재함을 보장한다.

입력

첫 번째 줄에 NN이 주어진다.

두 번째 줄부터 NN개의 줄 중 ii번째 줄에 x_i,y_ix\_i, y\_i가 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 문제의 답을 출력하여라.

제한

  • 2≤N≤1,000,0002 \leq N \leq 1\\,000\\,000
  • −109≤x_i,y_i≤109-10^9 \leq x\_i, y\_i \leq 10^9 (1≤i≤N1 \leq i \leq N)

힌트

어떤 점 (x,y)(x,y)에서 (x′,y′)(x',y')만큼 움직이면 점 (x+x′,y+y′)(x+x',y+y')으로 이동한다.

격자점 중 검게 칠해진 점의 비율 AA는 엄밀히 다음과 같이 정의할 수 있다:

  • 모든 ϵ>0\epsilon>0에 대해 어떤 양의 정수 NN이 존재해서, n>Nn > N인 모든 정수 nn에 대해 −n≤x,y≤n-n \leq x,y \leq n의 범위 내 모든 격자점 (x,y)(x,y) 중 칠해져 있는 점의 비율과 AA의 차이가 ϵ\epsilon 미만이다. 본 문제에서는 AA가 항상 존재하며 유리수임을 보장한다.

어떤 소수 pp와 정수 a,ba,b에 대해 gcd⁡(b,p)=1\gcd(b,p)=1이라면, (a⋅b−1) mod p(a \cdot b^{-1}) \bmod p는 bx≡a(modp)bx \equiv a\pmod{p}를 만족하는 가장 작은 음이 아닌 정수 xx로 정의된다.

예제2

  1. 예제 1

    입력
    3
    2 0
    2 2
    0 2
    
    예상 출력
    250000002
    
  2. 예제 2

    입력
    2
    1 2
    2 4
    
    예상 출력
    0