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 |
|
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 |