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
2018-11-23 02:47:06+0900
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
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