結果

問題 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  
実行時間 34 ms / 2,000 ms
コード長 916 bytes
コンパイル時間 178 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 11,520 KB
最終ジャッジ日時 2024-07-02 01:50:37
合計ジャッジ時間 1,532 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 34 ms
11,392 KB
testcase_01 AC 33 ms
11,392 KB
testcase_02 AC 31 ms
11,392 KB
testcase_03 AC 32 ms
11,392 KB
testcase_04 AC 32 ms
11,392 KB
testcase_05 AC 32 ms
11,392 KB
testcase_06 AC 31 ms
11,392 KB
testcase_07 AC 31 ms
11,264 KB
testcase_08 AC 32 ms
11,520 KB
testcase_09 AC 32 ms
11,392 KB
testcase_10 AC 33 ms
11,392 KB
testcase_11 AC 30 ms
11,520 KB
testcase_12 AC 33 ms
11,392 KB
testcase_13 AC 32 ms
11,392 KB
testcase_14 AC 33 ms
11,392 KB
testcase_15 AC 31 ms
11,392 KB
testcase_16 AC 31 ms
11,392 KB
testcase_17 AC 32 ms
11,392 KB
testcase_18 AC 33 ms
11,264 KB
testcase_19 AC 33 ms
11,392 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