Submission #1444718
Source Code Expand
#include <bits/stdc++.h> #define REP(i,n) for(int i=0;i<(int)(n);i++) #define ALL(x) (x).begin(),(x).end() #define LL long long using namespace std; int main(){ int N; cin>>N; LL D; cin>>D; long double pro[3][3]={{1.0/2 , 1.0/3, 1.0/6}, {2.0/3, 1.0/3, 0}, {5.0/6, 1.0/6, 0}}; int num[3]={0};//(0,1,2) →(2,3,5) の出た回数… while(true){ if(D%2!=0||D==0)break; num[0]++; D/=2; } while(true){ if(D%3!=0||D==0)break; num[1]++; D/=3; } while(true){ if(D%5!=0||D==0)break; num[2]++; D/=5; } if(D!=1){ cout<<0<<endl; }else{ long double dp[3][N+1][201]; fill(dp[0][0],dp[3][0],0); dp[0][0][0]=1; dp[1][0][0]=1; dp[2][0][0]=1; REP(k,3) { REP(i, N) { REP(j,201){ if(j==0)dp[k][i+1][j]=dp[k][i][j]; else if(j==1)dp[k][i+1][j]=dp[k][i][j]+(-dp[k][i][j]+dp[k][i][j-1])*(pro[k][1]+pro[k][2]); else dp[k][i+1][j]=dp[k][i][j]+(-dp[k][i][j]+dp[k][i][j-1])*(pro[k][1]+pro[k][2])+(-dp[k][i][j-1]+dp[k][i][j-2])*pro[k][2]; } } } if(num[0]+num[1]+num[2]>N){ cout<<0<<endl; }else{ cout<<fixed<<setprecision(10)<<dp[0][N][num[0]]*dp[1][N][num[1]]*dp[2][N][num[2]]<<endl; } } return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - サイコロ |
User | inmir |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1584 Byte |
Status | WA |
Exec Time | 2 ms |
Memory | 1152 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 | 1 ms | 512 KB |
01 | WA | 2 ms | 1024 KB |
02 | AC | 2 ms | 1024 KB |
03 | WA | 1 ms | 640 KB |
04 | WA | 1 ms | 640 KB |
05 | AC | 2 ms | 1152 KB |
06 | AC | 2 ms | 1024 KB |
07 | AC | 2 ms | 1024 KB |
08 | AC | 1 ms | 384 KB |
09 | AC | 2 ms | 1024 KB |
10 | AC | 1 ms | 256 KB |
90 | AC | 1 ms | 256 KB |
91 | AC | 1 ms | 256 KB |