Submission #3780171


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
long long int D;
int N;
double memo[101][75][40][20];
double P(int i,int a,int b,int c){
    if(memo[i][a][b][c] != -1) return memo[i][a][b][c];
    double ans=0;
    if(i == 1){
        for(int j=1;j<=6;j++){
            if(j % (int)(pow(2,a)*pow(3,b)*pow(5,c)) == 0) ans++;
        }
        return memo[1][a][b][c] = ans;
    }
    if(memo[i][a][b][c] != -1) return memo[i][a][b][c];
    ans = P(i-1,a,b,c) + P(i-1,max(a-1,0),b,c) + P(i-1,a,max(b-1,0),c) + P(i-1,max(a-2,0),b,c) + P(i-1,a,b,max(c-1,0)) + P(i-1,max(a-1,0),max(b-1,0),c);
    return memo[i][a][b][c] = ans;
}

int main(){
    for(int q=0;q<101;q++){
        for(int w=0;w<75;w++){
            for(int e=0;e<40;e++){
                for(int r=0;r<20;r++) memo[q][w][e][r] = -1;
            }
        }
    }
    cin >> N >> D;
    int a=0;
    int b=0;
    int c=0;
    while(D%2 == 0){
        D = D/2;
        a++;
    }
    while(D%3 == 0){
        D = D/3;
        b++;
    }
    while(D%5 == 0){
        D = D/5;
        c++;
    }
    if(D != 1) cout << 0 << endl;
    else{
        double ans = P(N,a,b,c) / 6;
        for(int i=0;i<N-1;i++){
            ans = ans/6;
        }
        cout << setprecision(8) << ans << endl;
    }
    return 0;
}

Submission Info

Submission Time
Task D - サイコロ
User youjo
Language C++14 (GCC 5.4.1)
Score 4
Code Size 1321 Byte
Status AC
Exec Time 23 ms
Memory 47616 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 17 ms 47616 KB
01 AC 20 ms 47616 KB
02 AC 18 ms 47616 KB
03 AC 19 ms 47616 KB
04 AC 18 ms 47616 KB
05 AC 21 ms 47616 KB
06 AC 23 ms 47616 KB
07 AC 20 ms 47616 KB
08 AC 19 ms 47616 KB
09 AC 18 ms 47616 KB
10 AC 18 ms 47616 KB
90 AC 17 ms 47616 KB
91 AC 17 ms 47616 KB