結果

問題 No.220 世界のなんとか2
ユーザー MitI_7MitI_7
提出日時 2017-11-30 17:45:14
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 31 ms / 1,000 ms
コード長 1,098 bytes
コンパイル時間 82 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 11,008 KB
最終ジャッジ日時 2024-05-05 16:20:34
合計ジャッジ時間 1,454 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 29 ms
10,880 KB
testcase_01 AC 30 ms
11,008 KB
testcase_02 AC 29 ms
10,880 KB
testcase_03 AC 28 ms
11,008 KB
testcase_04 AC 26 ms
11,008 KB
testcase_05 AC 28 ms
11,008 KB
testcase_06 AC 28 ms
11,008 KB
testcase_07 AC 28 ms
11,008 KB
testcase_08 AC 27 ms
11,008 KB
testcase_09 AC 29 ms
10,880 KB
testcase_10 AC 28 ms
11,008 KB
testcase_11 AC 27 ms
11,008 KB
testcase_12 AC 27 ms
10,880 KB
testcase_13 AC 27 ms
11,008 KB
testcase_14 AC 31 ms
10,880 KB
testcase_15 AC 26 ms
10,880 KB
testcase_16 AC 27 ms
10,880 KB
testcase_17 AC 29 ms
11,008 KB
testcase_18 AC 28 ms
10,880 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
from collections import defaultdict, Counter
from itertools import product, groupby, count, permutations, combinations
from math import pi, sqrt, ceil, floor
from collections import deque
from bisect import bisect, bisect_left, bisect_right
from string import ascii_lowercase
from functools import lru_cache, reduce

INF = float("inf")
sys.setrecursionlimit(10 ** 7)

# 4近傍(右, 下, 左, 上)
dy = [0, -1, 0, 1]
dx = [1, 0, -1, 0]


def inside(y: int, x: int, H: int, W: int) -> bool: return 0 <= y < H and 0 <= x < W

S = ""
memo = {}
def dfs(idx, tight, find, rest):
    if idx >= len(S):
        return find or rest == 0
    if (idx, tight, find, rest) in memo:
        return memo[(idx, tight, find, rest)]

    x = int(S[idx])
    upper = x if tight else 9
    ans = 0
    for i in range(upper + 1):
        ans += dfs(idx + 1, tight and (i == x), find or i == 3, (rest + i) % 3)

    memo[(idx, tight, find, rest)] = ans
    return ans


def main():
    global S
    S = str(10 ** int(input()))
    print(dfs(0, True, False, 0) - 1)

if __name__ == '__main__':
    main()
0