結果

問題 No.1595 The Final Digit
ユーザー hirakuhiraku
提出日時 2021-07-10 11:13:36
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 21 ms / 2,000 ms
コード長 916 bytes
コンパイル時間 99 ms
コンパイル使用メモリ 10,720 KB
実行使用メモリ 9,320 KB
最終ジャッジ日時 2023-09-14 18:49:09
合計ジャッジ時間 1,408 ms
ジャッジサーバーID
(参考情報)
judge13 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 20 ms
9,260 KB
testcase_01 AC 19 ms
9,180 KB
testcase_02 AC 21 ms
9,160 KB
testcase_03 AC 20 ms
9,176 KB
testcase_04 AC 20 ms
9,240 KB
testcase_05 AC 20 ms
9,320 KB
testcase_06 AC 20 ms
9,124 KB
testcase_07 AC 20 ms
9,184 KB
testcase_08 AC 20 ms
9,152 KB
testcase_09 AC 19 ms
9,232 KB
testcase_10 AC 20 ms
9,160 KB
testcase_11 AC 20 ms
9,284 KB
testcase_12 AC 20 ms
9,232 KB
testcase_13 AC 20 ms
9,108 KB
testcase_14 AC 21 ms
9,168 KB
testcase_15 AC 21 ms
9,176 KB
testcase_16 AC 20 ms
9,216 KB
testcase_17 AC 20 ms
9,164 KB
testcase_18 AC 19 ms
9,104 KB
testcase_19 AC 19 ms
9,044 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

# 周期、サイクル

from collections import defaultdict

p, q, r, K = map(int, input().split())

A = [-1] * 10 ** 5
A[0] = p % 10
A[1] = q % 10
A[2] = r % 10

# 3点が一致すれば循環する
visited = defaultdict(tuple)
steps = [(-1, -1, A[0]), (-1, -1, A[1]), (-1, -1, A[2])]

pos = (A[0], A[1], A[2])
cnt = 2
while pos not in visited:
    visited[pos] = 1
    steps.append(pos)
    cnt += 1
    A[cnt] = A[cnt - 1] + A[cnt - 2] + A[cnt - 3]
    A[cnt] %= 10
    pos = (A[cnt - 2], A[cnt - 1], A[cnt])
    if cnt == K - 1:
        print(A[K - 1])
        exit()

# print(steps)

loop_start = steps.index(pos)  # ループの開始点
loop_cycle = len(steps) - loop_start  # ループの周期

# print(loop_start, loop_cycle)

freq, pos = divmod(K - loop_start - 1, loop_cycle)  # freq:周回数、pos:到着位置
# ans = steps[loop_start + pos] + 1
ans = steps[loop_start + pos]

print(sum(ans) % 10)
0