結果

問題 No.2193 メガの下1桁
ユーザー lam6er
提出日時 2025-04-16 16:29:22
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,126 bytes
コンパイル時間 368 ms
コンパイル使用メモリ 82,500 KB
実行使用メモリ 53,896 KB
最終ジャッジ日時 2025-04-16 16:30:52
合計ジャッジ時間 2,754 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33 WA * 7
権限があれば一括ダウンロードができます

ソースコード

diff #

M = int(input())
D = int(input())
N = int(input())
B = int(input())

def compute_mod(M, D, N, B):
    if N == 0:
        return M % B
    current_mod = M % B
    seen = {current_mod: 0}
    steps = [current_mod]
    remaining = N
    step = 0
    while remaining > 0:
        a = (current_mod + D) % B
        exponent = current_mod
        if a == 0 and exponent == 0:
            next_m = 1 % B
        else:
            next_m = pow(a, exponent, B)
        current_mod = next_m
        step += 1
        remaining -= 1
        if current_mod in seen:
            start = seen[current_mod]
            loop_length = step - start
            if loop_length == 0:
                current_mod = steps[start]
                break
            total_loops = remaining // loop_length
            remainder_steps = remaining % loop_length
            final_pos = start + remainder_steps
            current_mod = steps[final_pos]
            break
        else:
            seen[current_mod] = step
            steps.append(current_mod)
    return current_mod

result = compute_mod(M, D, N, B)
print(result if result < 10 else 'A')
0