Submission #2114244


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

int main() {
	int64_t n, d;
	cin >> n >> d;
	double dp[n + 1][60][60][60]{};
	dp[0][0][0][0] = 1;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 60; j++) {
			for (int k = 0; k < 60; k++) {
				for (int l = 0; l < 60; l++) {
					dp[i + 1][j][k][l] += dp[i][j][k][l] / 6;
					dp[i + 1][min(59, j + 1)][k][l] += dp[i][j][k][l] / 6;
					dp[i + 1][j][min(59, k + 1)][l] += dp[i][j][k][l] / 6;
					dp[i + 1][min(59, j + 2)][k][l] += dp[i][j][k][l] / 6;
					dp[i + 1][j][k][min(59, l + 1)] += dp[i][j][k][l] / 6;
					dp[i + 1][min(59, j + 1)][min(59, k + 1)][l] += dp[i][j][k][l] / 6;
				}
			}
		}
	}
	int a = 0, b = 0, c = 0;
	while (d % 2 == 0) {
		a++;
		d /= 2;
	}
	while (d % 3 == 0) {
		b++;
		d /= 3;
	}
	while (d % 5 == 0) {
		c++;
		d /= 5;
	}
	if (d != 1) {
		cout << 0 << endl;
		return 0;
	}
	double ans = 0;
	for (int j = a; j < 60; j++) {
		for (int k = b; k < 60; k++) {
			for (int l = c; l < 60; l++) {
				ans += dp[n][j][k][l];
			}
		}
	}
	cout << fixed << setprecision(10) << ans << endl;
	return 0;
}

Submission Info

Submission Time
Task D - サイコロ
User jbyxm
Language C++14 (GCC 5.4.1)
Score 4
Code Size 1126 Byte
Status AC
Exec Time 472 ms
Memory 170624 KB

Judge Result

Set Name All
Score / Max Score 4 / 4
Status
AC × 13
Set Name Test Cases
All 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 90, 91
Case Name Status Exec Time Memory
00 AC 126 ms 55936 KB
01 AC 371 ms 141952 KB
02 AC 333 ms 130176 KB
03 AC 142 ms 62720 KB
04 AC 138 ms 61056 KB
05 AC 412 ms 153856 KB
06 AC 365 ms 140288 KB
07 AC 343 ms 133504 KB
08 AC 67 ms 30592 KB
09 AC 327 ms 128512 KB
10 AC 472 ms 170624 KB
90 AC 10 ms 5248 KB
91 AC 14 ms 7040 KB