底辺私立医大を卒業した医者って頭悪いよね? Part10at HOSP
底辺私立医大を卒業した医者って頭悪いよね? Part10 - 暇つぶし2ch386:卵の名無しさん
18/10/31 21:06:16.10 qgJ05S6D.net
{- 見づらいshellを起動するより、WinGHCiで対話型に算出しても速度は変わらないな。コンパイルしてコマンドラインから実行可能なようにもしておく-}
import System.Environment
choose (n,r) = product[1..n] `div` product[1..n-r] `div` product[1..r]
nloc m n k l = do
let q = div (n*k+l) m
r = mod (n*k+l) m
in (n-q)*(m-k) + q-1-l + if r>k then k-r else 0
nwin m n c = sum[choose ((nloc m n k l), c-1) | k<-[0..m-1], l<-[0..n-1], k*(n-1) < l*(m-1)]
mwin m n c = sum[choose ((nloc n m k l), c-1) | k<-[0..n-1], l<-[0..m-1], k*(m-1) < l*(n-1)]
draw m n c = choose(m*n,c) - nwin m n c - mwin m n c
takara m n k = do
putStrLn $ "短軸p1st = " ++ show(mwin m n k)
putStrLn $ "長軸q1st = " ++ show(nwin m n k)
putStrLn $ "同等draw = " ++ show(draw m n k)
main = do
argList <- getArgs -- m : 縦マス(短軸) n : 横マス(長軸) k : 宝の数
let m = read (argList !! 0)
n = read (argList !! 1)
k = read (argList !! 2)
putStrLn $ "p1st = " ++ show(mwin m n k) ++ ", q1st = " ++ show(nwin m n k) ++ ", draw = " ++ show(draw m n k)
{-Prelude> takara 10 20 100
短軸p1st = 15057759425309840160151925452579572328997602171271937639470
長軸q1st = 15057796557877993527038542474310161591275806044157319150135
同等draw = 60432958672915447478213709150594429954231181459984080051715-}


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch