Submission #6485995


Source Code Expand

import sys
sys.setrecursionlimit(4100000)

import logging

# logging.basicConfig(level=logging.DEBUG)

logger = logging.getLogger(__name__)

from collections import defaultdict

# @profile
def resolve():
    N, D = [int(x) for x in sys.stdin.readline().split()]

    logger.debug('{} {}'.format(N, D))

    def rec(i):
        if i == N:
            d = {1:1}
            suma = 0
        else:
            suma, d = rec(i+1)

        suma *= 6
        new_dict = defaultdict(int)
        for i_prod, v in d.items():
            for j in range(1, 6+1):
                if i_prod * j >= D and i_prod * j % D == 0:
                    suma += v
                else:
                    new_dict[i_prod * j] += v
        logger.debug("{} {} {}".format(i, suma, new_dict))
        return suma, new_dict

    suma, res_dict = rec(1)
    
    print(suma / 6**N)


if __name__ == "__main__":
    resolve()

# AtCoder Unit Test で自動生成できる, 最後のunittest.main は消す
# python -m unittest template/template.py で実行できる
# pypy3 -m unittest template/template.py で実行できる

import sys
from io import StringIO
import unittest

class TestClass(unittest.TestCase):
    def assertIO(self, input, output):
        stdout, stdin = sys.stdout, sys.stdin
        sys.stdout, sys.stdin = StringIO(), StringIO(input)
        resolve()
        sys.stdout.seek(0)
        out = sys.stdout.read()[:-1]
        sys.stdout, sys.stdin = stdout, stdin
        self.assertEqual(out, output)
    def test_Sample_Input_1(self):
        input = """2 6"""
        output = """0.416666667"""
        self.assertIO(input, output)
    def test_Sample_Input_2(self):
        input = """3 2"""
        output = """0.875000000"""
        self.assertIO(input, output)

Submission Info

Submission Time
Task D - サイコロ
User Kazhir
Language Python (3.4.3)
Score 0
Code Size 1835 Byte
Status TLE
Exec Time 2105 ms
Memory 24476 KB

Judge Result

Set Name All
Score / Max Score 0 / 4
Status
AC × 6
TLE × 7
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 500 ms 10504 KB
01 TLE 2105 ms 24228 KB
02 TLE 2105 ms 24396 KB
03 AC 813 ms 13132 KB
04 AC 699 ms 10620 KB
05 TLE 2105 ms 23112 KB
06 TLE 2105 ms 20576 KB
07 TLE 2105 ms 20284 KB
08 AC 73 ms 5576 KB
09 TLE 2105 ms 20308 KB
10 TLE 2105 ms 24476 KB
90 AC 42 ms 5580 KB
91 AC 42 ms 5584 KB