結果
問題 | No.58 イカサマなサイコロ |
ユーザー | jp_ste |
提出日時 | 2014-11-10 16:16:18 |
言語 | Java21 (openjdk 21) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,375 bytes |
コンパイル時間 | 1,820 ms |
コンパイル使用メモリ | 78,268 KB |
実行使用メモリ | 41,372 KB |
最終ジャッジ日時 | 2024-06-10 02:20:55 |
合計ジャッジ時間 | 3,444 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 111 ms
40,932 KB |
testcase_01 | AC | 103 ms
41,216 KB |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | AC | 109 ms
40,764 KB |
testcase_05 | AC | 91 ms
40,104 KB |
testcase_06 | AC | 90 ms
39,904 KB |
testcase_07 | AC | 110 ms
40,840 KB |
testcase_08 | AC | 88 ms
40,092 KB |
testcase_09 | AC | 110 ms
41,372 KB |
ソースコード
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { final static double NORMAL[] = {1,2,3,4,5,6}; final static double CHEAT [] = {4,4,5,5,6,6}; public static void main(String[] args) throws IOException { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(r.readLine()); int k = Integer.parseInt(r.readLine()); double tarou[][] = makeDpList(n, k); double jirou[][] = makeDpList(n, 0); double sum = 0d; for(int i=n; i<=6*n; i++) { for(int j=n; j<=6*n; j++) { if(i-j <= 0) break; sum += (tarou[i][n] * jirou[j][n]); } } System.out.println(String.format("%.5f", sum)); } static double[][] makeDpList(int n, int k) { int nN = n - k; double list[][] = new double[n*6+1][n+1]; if(n > 0) { for(int i=1; i<=6; i++) list[i][1] = 1d/6; } else { for(int i=4; i<=6; i++) list[i][1] = 2d/6; } double d[]; for(int j=2; j<=n; j++) { if(j<=nN) { d = NORMAL; } else { d = CHEAT ; } int y = 6; for(int i=j; i<=j*6; i++) { for(int m=0; m<6; m++) { int rem = i-(int)d[m]; if(rem < 0) continue; list[i][j] += list[rem][j-1]; } if(list[i][j] > 0) list[i][j] /= y; } y *= 6; } return list; } }