結果
問題 | No.220 世界のなんとか2 |
ユーザー | MitI_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 |
ソースコード
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()