Submission #5374846


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[100][201][101][101];

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, 201) {
            REP(k, 0, 101) {
                if (j/2+k > n)
                    break;
                REP(l, 0, 101) {
                    if (j/2+k+l > n)
                        break;
                    // 1
                    dp[i+1][j][k][l] += dp[i][j][k][l] * 1 / 6.0;

                    // 2
                    dp[i+1][min(j+1, 60)][k][l] += dp[i][j][k][l] * 1 / 6.0;

                    // 3
                    dp[i+1][j][min(k+1, 60)][l] += dp[i][j][k][l] * 1 / 6.0;

                    // 4
                    dp[i+1][min(j+2, 60)][k][l] += dp[i][j][k][l] * 1 / 6.0;

                    // 5
                    dp[i+1][j][k][min(l+1, 60)] += dp[i][j][k][l] * 1 / 6.0;

                    // 6
                    dp[i+1][min(j+1, 60)][min(k+1, 60)][l] += dp[i][j][k][l] * 1 / 6.0;
                }
            }
        }
    }

    double ans = 0;
    REP(j, fac[2], 201) {
        REP(k, fac[3], 101) {
            REP(l, fac[5], 101) {
                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 1813 Byte
Status MLE
Exec Time 727 ms
Memory 1442048 KB

Judge Result

Set Name All
Score / Max Score 0 / 4
Status
AC × 5
MLE × 8
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 56 ms 231680 KB
01 MLE 575 ms 1276160 KB
02 MLE 444 ms 1083648 KB
03 MLE 71 ms 282880 KB
04 MLE 67 ms 270592 KB
05 MLE 727 ms 1442048 KB
06 MLE 554 ms 1247488 KB
07 MLE 478 ms 1134848 KB
08 AC 20 ms 86272 KB
09 MLE 429 ms 1057024 KB
10 AC 1 ms 256 KB
90 AC 5 ms 6400 KB
91 AC 5 ms 8448 KB