結果
問題 | No.533 Mysterious Stairs |
ユーザー | McGregorsh |
提出日時 | 2022-10-31 23:16:36 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 468 ms / 5,000 ms |
コード長 | 2,344 bytes |
コンパイル時間 | 1,281 ms |
コンパイル使用メモリ | 86,992 KB |
実行使用メモリ | 190,092 KB |
最終ジャッジ日時 | 2023-09-22 20:12:19 |
合計ジャッジ時間 | 11,020 ms |
ジャッジサーバーID (参考情報) |
judge15 / judge11 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 238 ms
91,984 KB |
testcase_01 | AC | 241 ms
92,188 KB |
testcase_02 | AC | 245 ms
92,036 KB |
testcase_03 | AC | 239 ms
92,228 KB |
testcase_04 | AC | 241 ms
92,004 KB |
testcase_05 | AC | 244 ms
92,268 KB |
testcase_06 | AC | 243 ms
91,984 KB |
testcase_07 | AC | 239 ms
92,196 KB |
testcase_08 | AC | 239 ms
92,132 KB |
testcase_09 | AC | 240 ms
92,208 KB |
testcase_10 | AC | 241 ms
92,196 KB |
testcase_11 | AC | 242 ms
92,264 KB |
testcase_12 | AC | 252 ms
93,164 KB |
testcase_13 | AC | 254 ms
93,404 KB |
testcase_14 | AC | 254 ms
93,384 KB |
testcase_15 | AC | 249 ms
93,564 KB |
testcase_16 | AC | 253 ms
93,308 KB |
testcase_17 | AC | 249 ms
93,452 KB |
testcase_18 | AC | 251 ms
93,216 KB |
testcase_19 | AC | 252 ms
93,356 KB |
testcase_20 | AC | 278 ms
104,716 KB |
testcase_21 | AC | 275 ms
105,516 KB |
testcase_22 | AC | 332 ms
131,204 KB |
testcase_23 | AC | 468 ms
188,720 KB |
testcase_24 | AC | 462 ms
190,092 KB |
testcase_25 | AC | 275 ms
104,480 KB |
testcase_26 | AC | 434 ms
177,032 KB |
testcase_27 | AC | 305 ms
118,428 KB |
ソースコード
import sys, re from fractions import Fraction from math import ceil, floor, sqrt, pi, factorial, gcd from copy import deepcopy from collections import Counter, deque, defaultdict from heapq import heapify, heappop, heappush from itertools import accumulate, product, combinations, combinations_with_replacement, permutations from bisect import bisect, bisect_left, bisect_right from functools import reduce from decimal import Decimal, getcontext, ROUND_HALF_UP def i_input(): return int(input()) def i_map(): return map(int, input().split()) def i_list(): return list(i_map()) def i_row(N): return [i_input() for _ in range(N)] def i_row_list(N): return [i_list() for _ in range(N)] def s_input(): return input() def s_map(): return input().split() def s_list(): return list(s_map()) def s_row(N): return [s_input for _ in range(N)] def s_row_str(N): return [s_list() for _ in range(N)] def s_row_list(N): return [list(s_input()) for _ in range(N)] def lcm(a, b): return a * b // gcd(a, b) def get_distance(x1, y1, x2, y2): d = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) return d def rotate(table): n_fild = [] for x in zip(*table[::-1]): n_fild.append(x) return n_fild sys.setrecursionlimit(10 ** 7) INF = float('inf') MOD = 10 ** 9 + 7 MOD2 = 998244353 ###関数コピーしたか?### def main(): N = int(input()) dp = [[0] * 3 for i in range(N+1)] if N == 1: dp[1][0] = 1 elif N == 2: dp[1][0] = 1 dp[2][1] = 1 else: dp[1][0] = 1 dp[2][1] = 1 dp[3][2] = 1 for i in range(N): for j in range(3): if j == 0: if i + 2 <= N: dp[i+2][1] += dp[i][j] dp[i+2][1] %= MOD if i + 3 <= N: dp[i+3][2] += dp[i][j] dp[i+3][2] %= MOD elif j == 1: if i + 1 <= N: dp[i+1][0] += dp[i][j] dp[i+1][0] %= MOD if i + 3 <= N: dp[i+3][2] += dp[i][j] dp[i+3][2] %= MOD elif j == 2: if i + 1 <= N: dp[i+1][0] += dp[i][j] dp[i+1][0] %= MOD if i + 2 <= N: dp[i+2][1] += dp[i][j] dp[i+2][1] %= MOD #print(dp) print(sum(dp[N]) % MOD) if __name__ == '__main__': main()