結果
問題 | No.58 イカサマなサイコロ |
ユーザー | tenten |
提出日時 | 2020-11-17 12:34:06 |
言語 | Java21 (openjdk 21) |
結果 |
AC
|
実行時間 | 135 ms / 5,000 ms |
コード長 | 1,518 bytes |
コンパイル時間 | 4,530 ms |
コンパイル使用メモリ | 77,624 KB |
実行使用メモリ | 54,496 KB |
最終ジャッジ日時 | 2024-07-23 08:11:36 |
合計ジャッジ時間 | 4,788 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 127 ms
53,904 KB |
testcase_01 | AC | 124 ms
54,016 KB |
testcase_02 | AC | 123 ms
54,496 KB |
testcase_03 | AC | 114 ms
52,748 KB |
testcase_04 | AC | 124 ms
54,232 KB |
testcase_05 | AC | 123 ms
54,228 KB |
testcase_06 | AC | 125 ms
53,924 KB |
testcase_07 | AC | 113 ms
52,776 KB |
testcase_08 | AC | 130 ms
53,908 KB |
testcase_09 | AC | 135 ms
54,052 KB |
ソースコード
import java.util.*; public class Main { static HashSet<String> all = new HashSet<>(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int[] ika = new int[]{3, 3, 4, 4, 5, 5}; int[] base = new int[11]; int[] next = new int[11]; for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { base[j - i + 5]++; } for (int x : ika) { next[x - i + 5]++; } } double[][] probables = new double[n + 1][101]; probables[0][50] = 1; for (int i = 1; i <= n; i++) { int[] tmp; if (i <= k) { tmp = next; } else { tmp = base; } for (int a = 0; a < probables[i].length; a++) { if (probables[i - 1][a] == 0.0) { continue; } for (int b = 0; b < tmp.length; b++) { int idx = a + b - 5; if (idx < 0 || idx >= probables[i].length || tmp[b] == 0) { continue; } probables[i][idx] += probables[i - 1][a] * tmp[b] / 36; } } } double ans = 0; for (int i = 51; i < probables[n].length; i++) { ans += probables[n][i]; } System.out.println(ans); } }