Problem 235
コンテンツ
235 An Arithmetic Geometric sequence
パラメトリックな数列の値について,
パラメータを探す.
基本的には 関数f が与えられ,f (x) = 0 なる x を探す問題.
今回は f が 単調なので,単純な二分探索を行った.
s :: Double -> Double s r = (+2e11).sum.map u $ [1..5000] where u k= (300 - fromIntegral k) * r ^ (k-1) bsearch :: (Double -> Double) -> Double -> Double -> Double -> Double bsearch f e p q | r - p < e = r | f r > = bsearch f e r q | otherwise = bsearch f e p r where r = ( p + q ) / 2 main :: IO () main = print $ bsearch s (1e-12) 1 2
この問題,実は結構,苦労した.どういうわけか,6*10^11ではなく,6*10^12だと思い込み,
答えがあわなくて,右往左往した.
丁寧にカンマが打ってあるのに,間違えるという,ファインプレー.
いや,でもさ,カンマ+ピリオド=4個,つまり,0は 4*3 = 12 個と思うわけですよ.
作成者 Toru Mano
最終更新時刻 2023-01-01 (c70d5a1)