Submission #2106081
Source Code Expand
#include "bits/stdc++.h"
#define ALL(g) (g).begin(),(g).end()
#define REP(i, x, n) for(int i = x; i < n; i++)
#define rep(i,n) REP(i,0,n)
#define RREP(i, x, n) for(int i = x; i >= n; i--)
#define rrep(i, n) RREP(i,n,0)
#define pb push_back
using namespace std;
using ll = long long;
using P = pair<int,int>;
using Pl = pair<ll,ll>;
using vi = vector<int>;
using vvi = vector<vi>;
const int mod=1e9+7,INF=1<<30;
const double EPS=1e-12,PI=3.1415926535897932384626;
const ll lmod = 1e9+7,LINF=1LL<<60;
const int MAX_N = 102;
double dp[MAX_N][102][50][30];
int main(){
int N; ll D; cin >> N >> D;
int cnt2=0,cnt3=0,cnt5=0;
while(D%2LL==0) D/=2LL,cnt2++;
while(D%3LL==0) D/=3LL,cnt3++;
while(D%5LL==0) D/=5LL,cnt5++;
if(D!=1LL){
cout << "0.0" << endl;
return 0;
}
dp[0][0][0][0] = 1.0;
rep(i,N) rep(j,cnt2+1) rep(k,cnt3+1) rep(l,cnt5+1){
dp[i+1][j][k][l] += dp[i][j][k][l]/6;
dp[i+1][min(j+1,cnt2)][k][l] += dp[i][j][k][l]/6;
dp[i+1][j][min(k+1,cnt3)][l] += dp[i][j][k][l]/6;
dp[i+1][min(j+2,cnt2)][k][l] += dp[i][j][k][l]/6;
dp[i+1][j][k][min(l+1,cnt5)] += dp[i][j][k][l]/6;
dp[i+1][min(j+1,cnt2)][min(k+1,cnt3)][l] += dp[i][j][k][l]/6;
}
printf("%.10lf",dp[N][cnt2][cnt3][cnt5]);
return 0;
}
Submission Info
Submission Time |
|
Task |
D - サイコロ |
User |
kurarrr |
Language |
C++14 (GCC 5.4.1) |
Score |
4 |
Code Size |
1295 Byte |
Status |
AC |
Exec Time |
24 ms |
Memory |
106880 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 |
8 ms |
37120 KB |
01 |
AC |
22 ms |
98560 KB |
02 |
AC |
19 ms |
90368 KB |
03 |
AC |
10 ms |
43264 KB |
04 |
AC |
9 ms |
41344 KB |
05 |
AC |
24 ms |
106880 KB |
06 |
AC |
23 ms |
98816 KB |
07 |
AC |
20 ms |
92544 KB |
08 |
AC |
6 ms |
20864 KB |
09 |
AC |
18 ms |
88448 KB |
10 |
AC |
1 ms |
256 KB |
90 |
AC |
2 ms |
2304 KB |
91 |
AC |
1 ms |
2304 KB |