Submission #5118454


Source Code Expand

from functools import lru_cache
import sys
sys.setrecursionlimit(1000000)

@lru_cache(maxsize=None)
def calc(a, b):
    pass

N, D = map(int, input().split())

A, B = 0, 0
while D%2==0:
    A += 1
    D //= 2
while D%3==0:
    B += 1
    D //= 3

if D > 1:
    print(0)
else:
    X = [[0] * (B+1) for _ in range(A+1)]
    X[0][0] = 1
    for i in range(N):
        Y = [[0] * (B+1) for _ in range(A+1)]
        for a in range(A+1):
            for b in range(B+1):
                Y[min(a+1, A)][min(b+1, B)] += X[a][b]/6 # 6
                Y[min(a+1, A)][b] += X[a][b]/3 # 2, 4
                Y[a][min(b+1, B)] += X[a][b]/6 # 3
                Y[a][b] += X[a][b]/3 # 1, 5
        X = Y
    print("{:.10f}".format(X[-1][-1]))
    

Submission Info

Submission Time
Task D - サイコロ
User Kiri8128
Language Python (3.4.3)
Score 0
Code Size 765 Byte
Status WA
Exec Time 80 ms
Memory 3572 KB

Judge Result

Set Name All
Score / Max Score 0 / 4
Status
AC × 5
WA × 8
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 23 ms 3572 KB
01 WA 23 ms 3572 KB
02 WA 23 ms 3572 KB
03 WA 23 ms 3572 KB
04 WA 24 ms 3572 KB
05 WA 23 ms 3572 KB
06 WA 23 ms 3572 KB
07 WA 80 ms 3572 KB
08 AC 23 ms 3572 KB
09 WA 23 ms 3572 KB
10 AC 23 ms 3572 KB
90 AC 23 ms 3572 KB
91 AC 23 ms 3572 KB