Submission #1232765
Source Code Expand
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> #include <iomanip> #include <unordered_map> #include <unordered_set> #include <map> #include <set> using namespace std; long long M=1000000007; int main(int argc, char const *argv[]) { long long n,d;cin>>n>>d; int pri[3]={2,3,5},num[3]={0,0,0}; for(int i=0;i<3;++i){ while(d%pri[i]==0){ num[i]++; d/=pri[i]; } } if(d!=1){ cout<<0.0<<endl; return 0; } vector<vector<vector<double>>> dp(2*n+3,vector<vector<double>>(n+1,vector<double>(n+1,0.0))); dp[0][0][0]=1.0; for(int t=0;t<n;++t){ vector<vector<vector<double>>> dp1(2*n+3,vector<vector<double>>(n+1,vector<double>(n+1,0.0))); for(int i=0;i<=2*t;++i)for(int j=0;j<=t;++j)for(int k=0;k<=t;++k){ dp1[i][j][k]+=dp[i][j][k]/6.0; dp1[i+1][j][k]+=dp[i][j][k]/6.0; dp1[i][j+1][k]+=dp[i][j][k]/6.0; dp1[i+2][j][k]+=dp[i][j][k]/6.0; dp1[i+1][j+1][k]+=dp[i][j][k]/6.0; dp1[i][j][k+1]+=dp[i][j][k]/6.0; } dp=dp1; } double res=0.0; for(int i=0;i<=2*n;++i)for(int j=0;j<=n;++j)for(int k=0;k<=n;++k){ if(i>=num[0]&&j>=num[1]&&k>=num[2])res+=dp[i][j][k]; } cout<<setprecision(10)<<res<<endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - サイコロ |
User | pillow97 |
Language | C++14 (GCC 5.4.1) |
Score | 4 |
Code Size | 1299 Byte |
Status | AC |
Exec Time | 1293 ms |
Memory | 25100 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 | 23 ms | 1536 KB |
01 | AC | 883 ms | 20112 KB |
02 | AC | 595 ms | 15464 KB |
03 | AC | 35 ms | 2096 KB |
04 | AC | 32 ms | 2000 KB |
05 | AC | 1293 ms | 25100 KB |
06 | AC | 818 ms | 19212 KB |
07 | AC | 681 ms | 16652 KB |
08 | AC | 3 ms | 512 KB |
09 | AC | 564 ms | 15076 KB |
10 | AC | 1 ms | 256 KB |
90 | AC | 1 ms | 256 KB |
91 | AC | 1 ms | 256 KB |