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

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

뷔퐁의 바늘

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

요약
길이가 1인 N개의 바늘 선분이 주어질 때 세로선 x = k와 교차하는 바늘의 개수를 세고, 그 비율로 2를 나눈 값을 출력한다.
난이도

쉬움10점 중 2점

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

문제

수천 년 동안 사람들은 π\pi의 근삿값을 구하는 데 관심을 가져 왔다. 그중 유명한 방법이 뷔퐁의 바늘이다. 좌표평면의 모든 정수 xx 좌표마다 수직선을 그어 놓고(즉 x=0x = 0, x=1x = 1, x=−1x = -1 등의 직선이 있다), 길이가 11인 바늘을 여러 개 떨어뜨린다. 각 바늘은 수직선과 교차하거나, 아니면 두 수직선 사이에 완전히 놓인다. 바늘을 무작위로 떨어뜨리면 수직선과 교차하는 바늘의 비율로 π\pi의 근삿값을 구할 수 있다. (실험에서 바늘을 정확히 어떻게 떨어뜨리는지에 대한 구체적인 가정은 이 문제에서 중요하지 않다.)

특히 수직선과 교차하는 바늘의 비율을 xx라 하면

π≈2x.\pi \approx \frac{2}{x}.

NN개의 바늘 위치가 주어진다(반드시 무작위일 필요는 없다). 이 중 적어도 하나는 수직선과 교차한다. 위 식을 이용해 π\pi의 근삿값을 구하시오.

입력

첫째 줄에 바늘의 개수 NN이 주어진다(1≤N≤1041 \leq N \leq 10^4). 이어서 NN개의 줄이 주어진다.

ii번째 줄은 ii번째 바늘을 나타낸다. 네 개의 실수 xi1,yi1,xi2,yi2x_{i1}, y_{i1}, x_{i2}, y_{i2}가 주어진다. ii번째 바늘의 한 끝점이 (xi1,yi1)(x_{i1}, y_{i1}), 다른 끝점이 (xi2,yi2)(x_{i2}, y_{i2})라는 뜻이다.

입력의 모든 실수는 소수점 아래 정확히 66자리까지 주어지며 절댓값은 1010 이하다. 또한 입력에 나오는 어떤 xx 좌표도 정수와의 차이가 10−610^{-6} 미만이 아니다.

모든 바늘의 길이가 11이므로, 각 ii에 대해 다음이 보장된다.

∣(xi1−xi2)2+(yi1−yi2)2−1∣<10−3.|(x_{i1} - x_{i2})^2 + (y_{i1} - y_{i2})^2 - 1| < 10^{-3}.

출력

위에서 설명한 π\pi의 근삿값을 실수 하나로 출력한다. 절대 오차 또는 상대 오차가 10−610^{-6} 이하면 정답으로 인정된다.

힌트

첫 번째 예제에서 첫 번째 바늘은 수직선(x=1x = 1)과 교차하지만 두 번째 바늘은 교차하지 않는다. 따라서 수직선과 교차하는 바늘의 비율은 1/21/2이고, 이에 대응하는 π\pi의 근삿값은 44이다.

두 번째 예제에서는 두 바늘 모두 수직선(x=1x = 1과 x=0x = 0)과 교차하므로, 수직선과 교차하는 바늘의 비율은 11이고 이에 대응하는 π\pi의 근삿값은 22이다.

예제2

  1. 예제 1

    입력
    2
    0.500000 0.500000 1.500000 0.500000
    0.400000 -0.200000 0.600000 0.779796
    
    예상 출력
    4.000000000000
    
  2. 예제 2

    입력
    2
    0.500000 0.500000 1.500000 0.500000
    2.250000 0.000000 1.542893 0.707107
    
    예상 출력
    2.000000000000