@
ITJoker 这是一份我写的代码,使用了一个递推关系:
令 v_k = f(k, k), p_k = \binom{2k}{k} / 2^{2k},则
v_{k+1} = (1- p_k) / (1 + p_k) v_k + (2k+1) * (2p_k) / (1+P_k)
```python
from decimal import *
pi = 3.14159265358979
getcontext().prec = 20
def solve_sheep(n):
p = [0 for _ in range(n + 1)]
v = [0 for _ in range(n + 1)]
v[1] = 1
p[1] = Decimal(0.5)
for k in range(2, n + 1):
p[k] = (1 - 1 / Decimal(2 * k)) * p[k - 1]
for k in range(1, n):
w = (1 - p[k]) / (1 + p[k])
v[k + 1] = w * v[k] + (1 - w) * (2 * k + 1)
return v[n]
def estimate_sheep(n):
return 2 * n + pi / 4 - (pi * n)**0.5
print(solve_sheep(10000))
print(estimate_sheep(10000))
```