プロジェクトオイラー
http://projecteuler.net/index.php?section=problems&id=255
この問題はやさしい。
例題をふつうに書くと、
def div_ceil(n, d):
return (n + d - 1) / ddef f(n, x):
return (x + div_ceil(n, x)) / 2def count(n):
counter = 1
x0 = 200
while True:
x1 = f(n, x0)
if x1 == x0:
return counter
x0 = x1
counter += 1print "%.10f" % (sum(map(count, xrange(10000, 100000))) / 9e4, )
14桁の場合は、これでは無理。
区間で考えて再帰で簡単に書ける。15分近くかかったけど。
最初、答えが合わなくてなんだろうと思ったら、単に打ち切る桁を間違えていただけだった。
19番目のようだ。