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
AC × 13
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