Submission #188395


Source Code Expand

#!/usr/bin/env python2.7

import sys
from collections import namedtuple

from cStringIO import StringIO
import unittest
import cProfile

def main():
    N, D = (int(x) for x in sys.stdin.readline().split())
    X, Y = (int(x) for x in sys.stdin.readline().split())
    print solve(N, D, X, Y)

cc = [[1]]
for i in xrange(1,1001):
    ccl = [1]
    for j in xrange(1,i):
        ccl.append(cc[-1][j-1] + cc[-1][j])
    ccl.append(1)
    cc.append(ccl)

def comb(A, B):
    return cc[A][B]

def count(a, b, c, d):
    P = (a, b, c, d)
    N = sum(P)
    return comb(N, a) * comb(N - a, b) * comb(N - a - b, c)

def subsolve(N, X, Y):
    X = abs(X)
    Y = abs(Y)
    R = N - X - Y
    if R % 2 != 0:
        return 0
    R /= 2

    res = 0
    for rx in xrange(R+1):
        ry = R - rx
        res += count(X+rx, rx, Y+ry, ry)

    D = 10 ** 11
    return float((res * D) / (4 ** N)) / D

def solve(N, D, X, Y):
    if X % D != 0 or Y % D != 0:
        return 0

    return subsolve(N, X / D, Y / D)
    
class Test(unittest.TestCase):

    @staticmethod
    def tryone(indata):
        sys.stdin = StringIO(indata)
        out = sys.stdout = StringIO()
        main()
        return out.getvalue()

    def test20(self):
        self.assertEqual(comb(0,0), 1)
        self.assertEqual(comb(1,0), 1)
        self.assertEqual(comb(1,1), 1)
        self.assertEqual(comb(2,0), 1)
        self.assertEqual(comb(2,1), 2)
        self.assertEqual(comb(2,2), 1)
        self.assertEqual(comb(3,0), 1)
        self.assertEqual(comb(3,1), 3)
        self.assertEqual(comb(3,2), 3)
        self.assertEqual(comb(3,3), 1)

    def test50(self):
        self.assertAlmostEqual(solve(2, 10000000, 10000000, 10000000), 0.125)
        self.assertAlmostEqual(solve(100, 2, 3, 7), 0)
        self.assertAlmostEqual(solve(11, 8562174, 25686522, 17124348), 0.018174648284912)

    def test80(self):
        L = 123456789
        solve(1000, L, 0, 0)

    def test90(self):
        self.assertEqual(self.tryone("""\
2 10000000
10000000 10000000
"""), """0.125\n""")

if __name__ == '__main__':
    if len(sys.argv) > 1:
        print "_/" * 30 + str(sys.argv)
        if sys.argv[1] == '-p':
            sys.argv.pop(1)
            cProfile.run("unittest.main(exit=False, failfast=True)", sort='time')
        else:
            unittest.main()
    else:
        main()

Submission Info

Submission Time
Task D - 大ジャンプ
User over80
Language Python (2.7.3)
Score 101
Code Size 2447 Byte
Status AC
Exec Time 470 ms
Memory 57036 KB

Judge Result

Set Name part1 part2 All
Score / Max Score 90 / 90 10 / 10 1 / 1
Status
AC × 23
AC × 36
AC × 68
Set Name Test Cases
part1 test_1_151403858_0_0AB.txt, test_1_1_0_1AB.txt, test_1_1_2_0AB.txt, test_1_200416616_-430405070_-79858930AB.txt, test_1_320861287_0_0AB.txt, test_1_445441131_0_0AB.txt, test_2_91743015_0_183486030AB.txt, test_3_165357536_496072608_0AB.txt, test_3_357154050_-106436394_768502001AB.txt, test_3_721501125_-568833455_353553641AB.txt, test_3_893846474_0_0AB.txt, test_4_291388018_-291388018_0AB.txt, test_5_318547875_955643625_-637095750AB.txt, test_5_704387671_-704387671_0AB.txt, test_5_82323965_639854915_-688317394AB.txt, test_6_187422602_374845204_-374845204AB.txt, test_6_346164451_0_0AB.txt, test_6_99058019_194123640_-837769837AB.txt, test_7_166330212_166330212_-332660424AB.txt, test_7_89698746_448493730_-179397492AB.txt, test_8_10000000_-40000000_-40000000AB.txt, test_8_10000000_0_80000000AB.txt, test_8_10000000_80000000_0AB.txt
part2 test_10_227248639_454497278_0B.txt, test_11_692637325_-181424149_-938839075B.txt, test_13_260236679_-780710037_-520473358B.txt, test_13_269280357_807841071_269280357B.txt, test_13_96859935_0_-581159610B.txt, test_16_40374395_-40374395_-565241530B.txt, test_1_151403858_0_0AB.txt, test_1_1_0_1AB.txt, test_1_1_2_0AB.txt, test_1_200416616_-430405070_-79858930AB.txt, test_1_320861287_0_0AB.txt, test_1_445441131_0_0AB.txt, test_21_304856339_609712678_914569017B.txt, test_26_214390232_-857560928_428780464B.txt, test_2_91743015_0_183486030AB.txt, test_30_10000000_-300000000_0B.txt, test_30_10000000_0_300000000B.txt, test_30_10000000_150000000_-150000000B.txt, test_30_54228128_0_813421920B.txt, test_3_165357536_496072608_0AB.txt, test_3_357154050_-106436394_768502001AB.txt, test_3_721501125_-568833455_353553641AB.txt, test_3_893846474_0_0AB.txt, test_4_291388018_-291388018_0AB.txt, test_5_318547875_955643625_-637095750AB.txt, test_5_704387671_-704387671_0AB.txt, test_5_82323965_639854915_-688317394AB.txt, test_6_187422602_374845204_-374845204AB.txt, test_6_346164451_0_0AB.txt, test_6_99058019_194123640_-837769837AB.txt, test_7_166330212_166330212_-332660424AB.txt, test_7_89698746_448493730_-179397492AB.txt, test_8_10000000_-40000000_-40000000AB.txt, test_8_10000000_0_80000000AB.txt, test_8_10000000_80000000_0AB.txt, test_9_283198156_849594468_849594468B.txt
All test_1000_1000000_-500000000_500000000.txt, test_1000_1000000_0_-1000000000.txt, test_1000_1000000_1000000000_0.txt, test_1000_150305_97998860_-32315575.txt, test_1000_1_0_0.txt, test_1000_1_2_0.txt, test_1000_1_2_2.txt, test_1000_3308678_-800700076_-350719868.txt, test_1000_3608549_811923525_689232859.txt, test_1000_3728577_-145414503_-969430020.txt, test_1000_537976_11297496_224335992.txt, test_10_227248639_454497278_0B.txt, test_11_692637325_-181424149_-938839075B.txt, test_130_95365311_-667557177_-286095933.txt, test_131_18204705_-145637640_0.txt, test_13_260236679_-780710037_-520473358B.txt, test_13_269280357_807841071_269280357B.txt, test_13_96859935_0_-581159610B.txt, test_16_40374395_-40374395_-565241530B.txt, test_1_151403858_0_0AB.txt, test_1_1_0_1AB.txt, test_1_1_2_0AB.txt, test_1_200416616_-430405070_-79858930AB.txt, test_1_320861287_0_0AB.txt, test_1_445441131_0_0AB.txt, test_210_28974130_0_260767170.txt, test_217_321156_24407856_22480920.txt, test_21_304856339_609712678_914569017B.txt, test_26_214390232_-857560928_428780464B.txt, test_289_421462830_-487186374_-417635361.txt, test_2_91743015_0_183486030AB.txt, test_30_10000000_-300000000_0B.txt, test_30_10000000_0_300000000B.txt, test_30_10000000_150000000_-150000000B.txt, test_30_54228128_0_813421920B.txt, test_339_4475128_957677392_281933064.txt, test_3_165357536_496072608_0AB.txt, test_3_357154050_-106436394_768502001AB.txt, test_3_721501125_-568833455_353553641AB.txt, test_3_893846474_0_0AB.txt, test_480_402960_-131767920_-34654560.txt, test_4_291388018_-291388018_0AB.txt, test_507_3516183_-879045750_-253165176.txt, test_515_8606048_-25818144_8606048.txt, test_522_2286376_-230923976_-18291008.txt, test_5_318547875_955643625_-637095750AB.txt, test_5_704387671_-704387671_0AB.txt, test_5_82323965_639854915_-688317394AB.txt, test_676_198114948_0_792459792.txt, test_688_151937211_-286341114_10198771.txt, test_6_187422602_374845204_-374845204AB.txt, test_6_346164451_0_0AB.txt, test_6_99058019_194123640_-837769837AB.txt, test_71_367604060_367604060_0.txt, test_752_120973200_0_-725839200.txt, test_772_881340073_0_0.txt, test_777_125719576_-499451637_822057459.txt, test_7_166330212_166330212_-332660424AB.txt, test_7_89698746_448493730_-179397492AB.txt, test_839_166155061_0_-332310122.txt, test_839_923157_923157_564972084.txt, test_849_415705_290993500_0.txt, test_873_418406_2928842_322172620.txt, test_8_10000000_-40000000_-40000000AB.txt, test_8_10000000_0_80000000AB.txt, test_8_10000000_80000000_0AB.txt, test_981_159373724_-637494896_-159373724.txt, test_9_283198156_849594468_849594468B.txt
Case Name Status Exec Time Memory
sample_01.txt AC 452 ms 57008 KB
sample_02.txt AC 458 ms 56900 KB
sample_03.txt AC 453 ms 56816 KB
test_1000_1000000_-500000000_500000000.txt AC 456 ms 56892 KB
test_1000_1000000_0_-1000000000.txt AC 458 ms 57020 KB
test_1000_1000000_1000000000_0.txt AC 456 ms 57032 KB
test_1000_150305_97998860_-32315575.txt AC 454 ms 57016 KB
test_1000_1_0_0.txt AC 450 ms 57020 KB
test_1000_1_2_0.txt AC 452 ms 56892 KB
test_1000_1_2_2.txt AC 459 ms 57024 KB
test_1000_3308678_-800700076_-350719868.txt AC 456 ms 56952 KB
test_1000_3608549_811923525_689232859.txt AC 449 ms 57024 KB
test_1000_3728577_-145414503_-969430020.txt AC 447 ms 57024 KB
test_1000_537976_11297496_224335992.txt AC 460 ms 57020 KB
test_10_227248639_454497278_0B.txt AC 450 ms 57020 KB
test_11_692637325_-181424149_-938839075B.txt AC 456 ms 57020 KB
test_130_95365311_-667557177_-286095933.txt AC 462 ms 57028 KB
test_131_18204705_-145637640_0.txt AC 447 ms 56920 KB
test_13_260236679_-780710037_-520473358B.txt AC 457 ms 57036 KB
test_13_269280357_807841071_269280357B.txt AC 448 ms 56892 KB
test_13_96859935_0_-581159610B.txt AC 447 ms 57020 KB
test_16_40374395_-40374395_-565241530B.txt AC 452 ms 57020 KB
test_1_151403858_0_0AB.txt AC 447 ms 56848 KB
test_1_1_0_1AB.txt AC 459 ms 57016 KB
test_1_1_2_0AB.txt AC 448 ms 57020 KB
test_1_200416616_-430405070_-79858930AB.txt AC 456 ms 57028 KB
test_1_320861287_0_0AB.txt AC 450 ms 57020 KB
test_1_445441131_0_0AB.txt AC 443 ms 56900 KB
test_210_28974130_0_260767170.txt AC 446 ms 57016 KB
test_217_321156_24407856_22480920.txt AC 452 ms 57032 KB
test_21_304856339_609712678_914569017B.txt AC 452 ms 57016 KB
test_26_214390232_-857560928_428780464B.txt AC 452 ms 57016 KB
test_289_421462830_-487186374_-417635361.txt AC 444 ms 56916 KB
test_2_91743015_0_183486030AB.txt AC 458 ms 56844 KB
test_30_10000000_-300000000_0B.txt AC 457 ms 56832 KB
test_30_10000000_0_300000000B.txt AC 449 ms 57036 KB
test_30_10000000_150000000_-150000000B.txt AC 448 ms 57012 KB
test_30_54228128_0_813421920B.txt AC 456 ms 57032 KB
test_339_4475128_957677392_281933064.txt AC 453 ms 57028 KB
test_3_165357536_496072608_0AB.txt AC 455 ms 57024 KB
test_3_357154050_-106436394_768502001AB.txt AC 470 ms 57020 KB
test_3_721501125_-568833455_353553641AB.txt AC 459 ms 57024 KB
test_3_893846474_0_0AB.txt AC 467 ms 57028 KB
test_480_402960_-131767920_-34654560.txt AC 443 ms 57028 KB
test_4_291388018_-291388018_0AB.txt AC 456 ms 57024 KB
test_507_3516183_-879045750_-253165176.txt AC 464 ms 57024 KB
test_515_8606048_-25818144_8606048.txt AC 459 ms 57020 KB
test_522_2286376_-230923976_-18291008.txt AC 449 ms 57024 KB
test_5_318547875_955643625_-637095750AB.txt AC 458 ms 57016 KB
test_5_704387671_-704387671_0AB.txt AC 457 ms 56852 KB
test_5_82323965_639854915_-688317394AB.txt AC 443 ms 57020 KB
test_676_198114948_0_792459792.txt AC 444 ms 57032 KB
test_688_151937211_-286341114_10198771.txt AC 459 ms 57016 KB
test_6_187422602_374845204_-374845204AB.txt AC 462 ms 57032 KB
test_6_346164451_0_0AB.txt AC 459 ms 57028 KB
test_6_99058019_194123640_-837769837AB.txt AC 459 ms 57032 KB
test_71_367604060_367604060_0.txt AC 453 ms 57028 KB
test_752_120973200_0_-725839200.txt AC 460 ms 57024 KB
test_772_881340073_0_0.txt AC 446 ms 56824 KB
test_777_125719576_-499451637_822057459.txt AC 449 ms 57020 KB
test_7_166330212_166330212_-332660424AB.txt AC 448 ms 56844 KB
test_7_89698746_448493730_-179397492AB.txt AC 451 ms 56920 KB
test_839_166155061_0_-332310122.txt AC 445 ms 57028 KB
test_839_923157_923157_564972084.txt AC 459 ms 57032 KB
test_849_415705_290993500_0.txt AC 450 ms 56828 KB
test_873_418406_2928842_322172620.txt AC 447 ms 57024 KB
test_8_10000000_-40000000_-40000000AB.txt AC 449 ms 57024 KB
test_8_10000000_0_80000000AB.txt AC 452 ms 57024 KB
test_8_10000000_80000000_0AB.txt AC 451 ms 56888 KB
test_981_159373724_-637494896_-159373724.txt AC 462 ms 56848 KB
test_9_283198156_849594468_849594468B.txt AC 445 ms 57024 KB