Submission #3248189
Source Code Expand
using System;
class Program
{
static void Main()
{
string[] input = Console.ReadLine().Split(' ');//Splitで区切り文字を指定して複数個受け取る。
long n = long.Parse(input[0]);
long d = long.Parse(input[1]);
long divideA = 0;//2の約数
long divideB = 0;//3
long divideC = 0;//5
while(d % 2 ==0)
{
d/= 2;
divideA++;
}
while(d % 3 ==0)
{
d/= 3;
divideB++;
}
while(d % 5 ==0)
{
d/= 5;
divideC++;
}
float[,,,] answers = new float[n+11,divideA+11,divideB+11,divideC+11];
answers[0,0,0,0] = 1;
for(long i = 0; i < n; i++)
{
for(long a = 0; a <= divideA; a++)
{
for(long b = 0; b <= divideB; b++)
{
for(long c = 0; c <= divideC ; c++)
{
answers[i+1,a,b,c] += answers[i,a,b,c] / 6;
answers[i+1,Math.Min(a+1, divideA),b,c] += answers[i,a,b,c] / 6;
answers[i+1,a,Math.Min(b+1, divideB),c] += answers[i,a,b,c] / 6;
answers[i+1,Math.Min(a+2, divideA),b,c] += answers[i,a,b,c] / 6;
answers[i+1,a,b,Math.Min(c+1, divideC)] += answers[i,a,b,c] / 6;
answers[i+1,Math.Min(a+1, divideA),Math.Min(b+1, divideB),c] += answers[i,a,b,c] / 6;
}
}
}
}
if(d == 1) Console.WriteLine(answers[n,divideA,divideB,divideC]);
else Console.WriteLine(0);
}
}
Submission Info
Submission Time |
|
Task |
D - サイコロ |
User |
suikameron |
Language |
C# (Mono 4.6.2.0) |
Score |
4 |
Code Size |
1470 Byte |
Status |
AC |
Exec Time |
35 ms |
Memory |
14176 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 |
21 ms |
11616 KB |
01 |
AC |
31 ms |
11360 KB |
02 |
AC |
24 ms |
12896 KB |
03 |
AC |
24 ms |
11360 KB |
04 |
AC |
23 ms |
11488 KB |
05 |
AC |
35 ms |
13920 KB |
06 |
AC |
30 ms |
14176 KB |
07 |
AC |
25 ms |
11872 KB |
08 |
AC |
23 ms |
9440 KB |
09 |
AC |
22 ms |
12640 KB |
10 |
AC |
20 ms |
9696 KB |
90 |
AC |
20 ms |
9080 KB |
91 |
AC |
20 ms |
11132 KB |