Submission #1232742


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+2,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+2,vector<vector<double>>(n+1,vector<double>(n+1,0.0)));
    for(int i=0;i<2*n;++i)for(int j=0;j<n;++j)for(int k=0;k<n;++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 0
Code Size 1296 Byte
Status TLE
Exec Time 2104 ms
Memory 24960 KB

Judge Result

Set Name All
Score / Max Score 0 / 4
Status
AC × 12
TLE × 1
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 47 ms 1568 KB
01 AC 1956 ms 21920 KB
02 AC 1360 ms 15368 KB
03 AC 73 ms 2064 KB
04 AC 65 ms 1980 KB
05 TLE 2104 ms 24960 KB
06 AC 1858 ms 19088 KB
07 AC 1512 ms 16548 KB
08 AC 5 ms 512 KB
09 AC 1295 ms 14976 KB
10 AC 1 ms 256 KB
90 AC 1 ms 256 KB
91 AC 1 ms 256 KB