Submission #3013132


Source Code Expand

#include <bits/stdc++.h>

using namespace std;
#define ll long long

#define rep(i, a) for (int (i) = 0; (i) < (int) (a); (i)++)
#define reps(i, a, b) for (int (i) = (int) (a); (i) < (int) (b); (i)++)
#define rrep(i, a) for (int (i) = (int) a-1; (i) >= 0; (i)--)
#define rreps(i, a, b) for (int (i) = (int) (a)-1; (i) >= (int) (b); (i)--)
#define MP(a, b) make_pair((a), (b))
#define PB(a) push_back((a))
#define all(v) (v).begin(), (v).end()
#define PRINT(f) if((f)){cout << (TRUE__) << endl;}else{cout << FALSE__ << endl;}
#define TRUE__ "Yes"
#define FALSE__ "No"
#define PERM(v) next_permutation(all(v))
#define UNIQUE(v) sort(all(v));(v).erase(unique(all(v)), v.end())
#define CIN(type, x) type x;cin >> x

#ifdef LOCAL
#define lcout(a) cout << a;
#define lcoutln(a) cout << a << endl;
#define lcerr(a) cerr << a;
#define lcerrln(a) cerr << a << endl;
#else
#define lcout(a) 
#define lcoutln(a) 
#define lcerr(a) 
#define lcerrln(a) 
#endif

double dp[101][70][50][35];

int a, b, c;

int main()
{
	ll N, D;
	cin >> N >> D;
	double p[6];
	rep(i, 6) p[i] = (double) i / 6;
	while(D % 2 == 0) {
		a++;
		D /= 2;
	}
	while(D % 3 == 0) {
		b++;
		D /= 3;
	}
	while(D % 5 == 0) {
		c++;
		D /= 5;
	}
	rep(j, 70) {
		rep(k, 50) {
			rep(l, 35) {
				dp[0][j][k][j] = 0;
			}
		}
	}
	dp[0][0][0][0] = 1;
	reps(i, 1, N+1) {
		rep(j, 70) {
			rep(k, 50) {
				rep(l, 35) {
					double res = dp[i-1][j][k][l] * p[1];
					if (j > 0) res += dp[i-1][j-1][k][l] * p[1];
					if (j > 1) res += dp[i-1][j-2][k][l] * p[1];
					if (j > 0 && k > 0) res += dp[i-1][j-1][k-1][l] * p[1];
					if (k > 0) res += dp[i-1][j][k-1][l] * p[1];
					if (l > 0) res += dp[i-1][j][k][l-1] * p[1];
					dp[i][j][k][l] = res;
				}
			}
		}
	}
	reps(i, 1, 3) rep(j, a+1) rep(k, b+1) rep(l, c+1) {
//		cout << i << " " << j << " " << k << " " << l << " " << dp[i][j][k][l] << endl;
	}
	double t = 0;
	reps(j, a, 70) reps(k, b, 50) reps(l, c, 35) t += dp[N][j][k][l];
	cout << fixed << setprecision(12) << t << endl;
	//cout << dp[N][a][b][c] << endl;
//	cout << a << " " << b << " " << c << endl;
}

Submission Info

Submission Time
Task D - サイコロ
User spihill
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2157 Byte
Status WA
Exec Time 60 ms
Memory 96896 KB

Compile Error

In function ‘int main()’:
cc1plus: warning: iteration 35u invokes undefined behavior [-Waggressive-loop-optimizations]
./Main.cpp:6:41: note: containing loop
 #define rep(i, a) for (int (i) = 0; (i) < (int) (a); (i)++)
                                         ^
./Main.cpp:54:2: note: in expansion of macro ‘rep’
  rep(j, 70) {
  ^

Judge Result

Set Name All
Score / Max Score 0 / 4
Status
AC × 7
WA × 6
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 21 ms 33024 KB
01 WA 50 ms 82176 KB
02 AC 46 ms 73984 KB
03 AC 23 ms 37120 KB
04 AC 22 ms 35072 KB
05 WA 54 ms 88320 KB
06 WA 49 ms 80128 KB
07 WA 47 ms 76032 KB
08 AC 12 ms 18688 KB
09 WA 45 ms 73984 KB
10 WA 60 ms 96896 KB
90 AC 3 ms 4352 KB
91 AC 4 ms 4352 KB