This comment is reply for 3870 nobsun: なるほど、なるほど、 そのままHask...(ICPC2007アジア地区予選A). Go to thread root.
[1..100]>>=pen #4252(2007/11/19 11:44 GMT) [ Haskell ] Rating4/4=1.00
(foldl ではなく)正格評価する foldl' を使ったバージョンです。 m は本質的でないので勝手に「札には 0 から n-1 までの数字が書かれていて 0 からスタート」という問題にしました。 さらに効率アップする規則がないか少し考えたんですが見つけられませんでした。 (c が k よりかなり大きいときは r `divMod` (k-1) した方が得ですが あまり本質的ではないですね) ただし k == 2 のときは面白い規則があり「たけしのコマネチ大学数学科」 でも取り上げられたようです。
1 2 3
import Data.List (foldl') mamakotate n k = n - (foldl' (\r c -> (r-k) `mod` c + 1) 0 [1..n-1])
Rating4/4=1.00-0+
[ reply ]
[1..100]>>=pen
#4252()
[
Haskell
]
Rating4/4=1.00
Rating4/4=1.00-0+