Submission #3642210


Source Code Expand

#include<stdio.h>
#include<stdlib.h>

typedef long long int int64;

#define POS(i2,i3,i5) ((min(i2,c2)*(c3+1)+min(i3,c3))*(c5+1)+min(i5,c5))

inline int min(int a,int b){
  return a<b?a:b;
}

void run(void){
  int n;
  int64 d;
  scanf("%d%lld",&n,&d);
  int c2,c3,c5;
  for(c2=0;d%2==0;c2++,d/=2);
  for(c3=0;d%3==0;c3++,d/=3);
  for(c5=0;d%5==0;c5++,d/=5);
  if(d>1){
    printf("0\n");
    return;
  }
  double *dp=(double *)calloc((c2+1)*(c3+1)*(c5+1),sizeof(double));
  const double f=(double)1/6;
  dp[POS(0,0,0)]=1;
  while(n--){
    int i,j,k;
    for(i=c2;i>=0;i--){
      for(j=c3;j>=0;j--){
	for(k=c5;k>=0;k--){
	  double p=f*dp[POS(i,j,k)];
	  dp[POS(i,j,k)]=p;
	  dp[POS(i+1,j,k)]+=p;
	  dp[POS(i,j+1,k)]+=p;
	  dp[POS(i+2,j,k)]+=p;
	  dp[POS(i,j,k+1)]+=p;
	  dp[POS(i+1,j+1,k)]+=p;
	}
      }
    }
  }
  printf("%.9lf\n",dp[POS(c2,c3,c5)]);
}

int main(void){
  run();
  return 0;
}

Submission Info

Submission Time
Task D - サイコロ
User sansen
Language C (GCC 5.4.1)
Score 4
Code Size 947 Byte
Status AC
Exec Time 1 ms
Memory 128 KB

Compile Error

./Main.c: In function ‘run’:
./Main.c:15:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%lld",&n,&d);
   ^

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 1 ms 128 KB
01 AC 1 ms 128 KB
02 AC 1 ms 128 KB
03 AC 1 ms 128 KB
04 AC 1 ms 128 KB
05 AC 1 ms 128 KB
06 AC 1 ms 128 KB
07 AC 1 ms 128 KB
08 AC 1 ms 128 KB
09 AC 1 ms 128 KB
10 AC 1 ms 128 KB
90 AC 1 ms 128 KB
91 AC 1 ms 128 KB