結果
問題 |
No.58 イカサマなサイコロ
|
ユーザー |
|
提出日時 | 2014-11-05 09:05:18 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 100 ms / 5,000 ms |
コード長 | 1,297 bytes |
コンパイル時間 | 150 ms |
コンパイル使用メモリ | 7,296 KB |
実行使用メモリ | 12,160 KB |
最終ジャッジ日時 | 2024-12-30 17:43:23 |
合計ジャッジ時間 | 2,042 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 |
コンパイルメッセージ
Syntax OK
ソースコード
# 前回までの目の合計ごとのパターン数 pr # 今回振るさいころの目 rolls # 今回振った後の目の合計ごとのパターン数 戻り値 def dice pr,rolls # pr 0 1 1 1 1 1 1 # rolls # 1 0 1 1 1 1 1 1 # 2 0 1 1 1 1 1 1 # 3 0 1 1 1 1 1 1 # 4 0 1 1 1 1 1 1 # 5 0 1 1 1 1 1 1 # 6 0 1 1 1 1 1 1 # ret 0 1 2 3 4 5 6 6 5 4 3 2 1 # pr 0 1 1 1 1 1 1 # rolls # 4 0 1 1 1 1 1 1 # 5 0 1 1 1 1 1 1 # 6 0 1 1 1 1 1 1 # 4 0 1 1 1 1 1 1 # 5 0 1 1 1 1 1 1 # 6 0 1 1 1 1 1 1 # ret 0 0 0 0 0 2 4 6 6 6 6 4 2 rolls.map{|i|(pr+[0]*rolls.size).rotate(-i)}.transpose.map{|i|i.inject(:+)} end n=gets.to_i k=gets.to_i jiro=[1]#さいころを0回振ったときに出る目(index)の合計のパターン数・・・0が1回のみ n.times{ jiro=dice(jiro,(1..6)) } taro=[1] (n-k).times{ taro=dice(taro,(1..6)) } k.times{ taro=dice(taro,[*4..6]*2) } v=0 jiro_sum=jiro.map{|i|v+=i;v-i}#目の合計がindex以下になるパターン数 p jiro_sum.zip(taro).map{|i,j|i*j}.inject(:+).to_f/(6**(2*n))#太郎が勝つパターン数/全パターン数