結果
| 問題 |
No.58 イカサマなサイコロ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-08-18 16:10:20 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 99 ms / 5,000 ms |
| コード長 | 767 bytes |
| コンパイル時間 | 329 ms |
| コンパイル使用メモリ | 7,168 KB |
| 実行使用メモリ | 12,288 KB |
| 最終ジャッジ日時 | 2024-12-26 17:37:56 |
| 合計ジャッジ時間 | 2,215 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 |
コンパイルメッセージ
Syntax OK
ソースコード
class Calc0058
EPS = 1e-3
def initialize(args)
args = args.map { |l| l.chomp.split(/\s+/) }
@n = args.shift.first.to_i
@k = args.shift.first.to_i
end
def run
sais_taro = Array.new(@n - @k) { (1..6).to_a } + Array.new(@k) { [4, 5, 6] * 2 }
sais_jiro = Array.new(@n) { (1..6).to_a }
hist_taro = make_hist(sais_taro, [1])
hist_jiro = make_hist(sais_jiro, [1])
hist_jiro.map.with_index { |h, i|
h * (hist_taro.drop(i + 1).inject(:+) || 0)
}.inject(:+).to_f / 6 ** (@n * 2)
end
def make_hist(sais, hist)
sais.each do |sai|
hist = sai.map { |d| [0] * d + hist + [0] * (sai.max - d) }.transpose.map { |r| r.inject(:+) }
end
hist
end
end
puts Calc0058.new(STDIN.readlines).run if __FILE__ == $0