Submission #5374629
Source Code Expand
#include <bits/stdc++.h> using namespace std; #define REP(i,begin, n) for(int i=begin;i<n;i++) typedef long long int lli; typedef pair<int, int> P; map<lli, lli> fac; // dp[i][j][k][l]: i個目のサイコロを振った時点で2,3,5がそれぞれj,k,l個使われている確率 double dp[101][63][63][63]; int main() { int n; lli d; cin >> n >> d; while(d%2==0){ d=d/2; fac[2]++; } while(d%3==0){ d=d/3; fac[3]++; } while(d%5==0){ d=d/5; fac[5]++; } if(d!=1){ cout<<0<<endl; return 0; } dp[0][0][0][0] = 1.0; REP(i, 0, n) { REP(j, 0, 61) { REP(k, 0, 61) { REP(l, 0, 61) { // 1 dp[i+1][j][k][l] += dp[i][j][k][l] * 1 / 6.0; // 2 dp[i+1][j+1][k][l] += dp[i][j][k][l] * 1 / 6.0; // 3 dp[i+1][j][k+1][l] += dp[i][j][k][l] * 1 / 6.0; // 4 dp[i+1][j+2][k][l] += dp[i][j][k][l] * 1 / 6.0; // 5 dp[i+1][j][k][l+1] += dp[i][j][k][l] * 1 / 6.0; // 6 dp[i+1][j+1][k+1][l] += dp[i][j][k][l] * 1 / 6.0; if (j == 60) { // 2 dp[i+1][j+2][k][l] += dp[i][j+1][k][l] * 1 / 6.0; // 3 dp[i+1][j][k+2][l] += dp[i][j+1][k][l] * 1 / 6.0; // 6 dp[i+1][j+2][k+2][l] += dp[i][j+1][k][l] * 1 / 6.0; } } } } } double ans = 0; REP(j, fac[2], 63) { REP(k, fac[3], 62) { REP(l, fac[5], 62) { ans += dp[n][j][k][l]; } } } cout << ans << endl; }
Submission Info
Submission Time | |
---|---|
Task | D - サイコロ |
User | longtime |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 2000 Byte |
Status | WA |
Exec Time | 428 ms |
Memory | 176512 KB |
Judge Result
Set Name | All | ||||
---|---|---|---|---|---|
Score / Max Score | 0 / 4 | ||||
Status |
|
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 | 131 ms | 63872 KB |
01 | WA | 386 ms | 164224 KB |
02 | WA | 345 ms | 149888 KB |
03 | AC | 148 ms | 72064 KB |
04 | AC | 143 ms | 70016 KB |
05 | WA | 428 ms | 176512 KB |
06 | WA | 380 ms | 162176 KB |
07 | WA | 356 ms | 153984 KB |
08 | AC | 70 ms | 35200 KB |
09 | WA | 339 ms | 147840 KB |
10 | AC | 1 ms | 256 KB |
90 | AC | 10 ms | 4480 KB |
91 | AC | 14 ms | 6528 KB |