Submission #3248158
Source Code Expand
using System;
class Program
{
static void Main()
{
string[] input = Console.ReadLine().Split(' ');//Splitで区切り文字を指定して複数個受け取る。
int n = int.Parse(input[0]);
long d = int.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(int 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 |
0 |
Code Size |
1466 Byte |
Status |
RE |
Exec Time |
22 ms |
Memory |
13180 KB |
Judge Result
Set Name |
All |
Score / Max Score |
0 / 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 |
RE |
19 ms |
8544 KB |
01 |
RE |
20 ms |
12640 KB |
02 |
RE |
20 ms |
8544 KB |
03 |
RE |
19 ms |
10720 KB |
04 |
RE |
19 ms |
10592 KB |
05 |
RE |
19 ms |
10592 KB |
06 |
RE |
21 ms |
12640 KB |
07 |
RE |
19 ms |
8672 KB |
08 |
RE |
19 ms |
10592 KB |
09 |
RE |
20 ms |
10592 KB |
10 |
RE |
20 ms |
10592 KB |
90 |
AC |
22 ms |
11128 KB |
91 |
AC |
22 ms |
13180 KB |