골
N
균일 한 길이 ( l
) 의 임의의 선분을 생성하고 ( ) 등거리 ( t
) 평행선 을 교차하는지 확인합니다 .
시뮬레이션
우리는 무엇을 시뮬레이션하고 있습니까? 부폰의 바늘 . 샌드 박스에서 모래를 부드럽게하고 같은 간격의 평행선을 그리십시오 (사이의 거리를 호출하십시오 t
). 길이가 똑 바른 막대를 가지고 샌드 박스에 l
떨어 뜨립니다 N
. 라인을 넘은 횟수를로하자 c
. 그럼 Pi = (2 * l * n) / (t * c)
!
우리는 이것을 어떻게 시뮬레이트합니까?
- 입력 받기
N,t,l
- 가진
N, t, l
모든 것을 양의 정수 - 다음과 같이하십시오
N
:- 균일하게 임의의 정수 좌표 생성
x,y
- 와
1 <= x, y <= 10^6
x,y
길이의 선분의 중심l
- 균일하게 임의의 정수 생성
a
- 와
1 <= a <= 180
- 하자
P
선분이 x 축과 교차하는 위치를 수 - 그런 다음
a
각도입니다(x,y), P, (inf,0)
- 균일하게 임의의 정수 좌표 생성
- 정수에
c
대해 선x = i*t
을 교차하는 선분 의 수를 세십시오.i
- 반환
(2 * l * N) / (t * c)
사양
- 입력
- 유연성, 표준 방식 (예 : 함수 매개 변수, STDIN) 및 표준 형식 (예 : 문자열, 이진)으로 입력
- 산출
- 유연하고 표준적인 방법으로 출력합니다 (예 : 반환, 인쇄)
- 공백, 후행 및 선행 공백이 허용됩니다.
- 정확도, 정밀도의 적어도 4 소수점을 제공하십시오 (예
3.1416
)
- 채점
- 최단 코드 승리!
테스트 사례
무작위 확률로 인해 결과가 이것들과 일치하지 않을 수 있습니다. 그러나 평균적으로 주어진 값에 대해이 정도의 정확도를 얻을 수 N, t, l
있습니다.
Input (N,t,l) -> Output
----------- ------
10,10,5 -> ?.????
10,100,50 -> ?.????
1000,1000,600 -> 3.????
10000,1000,700 -> 3.1???
100000,1000,700 -> 3.14??
TL; DR
이러한 과제는 Pi를 근사화하기 위해 자연과 두뇌 (및 일부 재사용 가능한 리소스) 만 필요한 알고리즘 시뮬레이션입니다. 좀비 종말 중에 Pi가 정말로 필요하다면,이 방법들은 탄약을 낭비 하지 않습니다 ! 총 9 가지 과제 가 있습니다 .
a
이 균일하다면 다른 방법 으로 방향 을 만들 수 있습니까? (2D Gauss Bubble 생각)
t > l
? 아래의 두 가지 솔루션이 이러한 가정을하므로 교차점 점검이 상당히 간단 해집니다.