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
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 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