Lang:Java
Edit12345678910111213141516171819202122232425262728293031import java.util.Scanner;public final class Main {public static void main(final String[] ignoredArgs) {try (final Scanner scanner = new Scanner(System.in)) {final int n = scanner.nextInt();final int m = scanner.nextInt();final double res = dicePossibility(n, m);System.out.println(String.format("%.2f", res * 100.0));}}public static double dicePossibility(final int n, final int m) {assert n >= 1;assert m >= 1;final double totalOccurrence = Math.pow(6.0, n);final int maxNumber = 6 * n;if (m > maxNumber || m < n) {return 0.0;} else if (m == n || m == maxNumber) {return 1.0 / totalOccurrence;}// occurrence[i-1][j-1] 表示掷了i枚骰子,点数之和是j的可能组合数// Note: use double to avoid overflow (even we use long)final double[][] occurrence = new double[n][];