結果
問題 |
No.2193 メガの下1桁
|
ユーザー |
![]() |
提出日時 | 2025-03-20 20:34:21 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 4,618 bytes |
コンパイル時間 | 328 ms |
コンパイル使用メモリ | 81,852 KB |
実行使用メモリ | 54,872 KB |
最終ジャッジ日時 | 2025-03-20 20:36:00 |
合計ジャッジ時間 | 2,923 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 32 WA * 8 |
ソースコード
M = int(input()) D = int(input()) N = int(input()) B = int(input()) def compute_pow_mod(a, exponent, B): a = a % B if a == 0: return 0 if exponent != 0 else 1 % B if B == 2: return 1 % B if exponent else 0 elif B == 3: exponent = exponent % 2 return pow(a, exponent if exponent != 0 else 2, 3) elif B == 4: if a == 0: return 0 elif a == 1: return 1 elif a == 2: if exponent == 0: return 1 % 4 elif exponent == 1: return 2 else: return 0 elif a == 3: exponent = exponent % 2 return 3 ** (exponent if exponent else 2) % 4 elif B == 5: exponent = exponent % 4 exponent = exponent if exponent != 0 else 4 return pow(a, exponent, 5) elif B == 6: if a in (1, 5): exponent = exponent % 2 return a ** (exponent if exponent else 2) % 6 elif a in (2, 4): if exponent == 0: return 1 % 6 elif exponent == 1: return a % 6 else: return (a ** 2) % 6 elif a == 3: return 3 if exponent >= 1 else 1 % 6 else: return 0 elif B == 7: exponent = exponent % 6 exponent = exponent if exponent != 0 else 6 return pow(a, exponent, 7) elif B == 8: if a % 2 == 0: if a == 0: return 0 elif a == 2: if exponent == 0: return 1 % 8 elif exponent == 1: return 2 elif exponent == 2: return 4 else: return 0 elif a == 4: if exponent == 0: return 1 % 8 else: return 4 if exponent == 1 else 0 elif a == 6: if exponent == 0: return 1 % 8 else: return 6 if exponent == 1 else (6 ** 2) % 8 else: # a == 8 mod 8 which is 0 return 0 else: exponent = exponent % 4 return pow(a, exponent if exponent != 0 else 4, 8) elif B == 9: if a in (1, 2, 4, 5, 7, 8): exponent = exponent % 6 exponent = exponent if exponent != 0 else 6 return pow(a, exponent, 9) elif a == 3 or a == 6: if exponent == 0: return 1 % 9 elif exponent == 1: return a % 9 else: return 0 elif B == 10: if a in (1, 3, 7, 9): exponent = exponent % 4 exponent = exponent if exponent != 0 else 4 return pow(a, exponent, 10) elif a == 5: return 5 elif a == 6: return 6 elif a == 2: exponent = exponent % 4 return (2 ** (exponent if exponent != 0 else 4)) % 10 elif a == 4: return 4 if exponent % 2 == 1 else 6 elif a == 8: exponent = exponent % 4 return (8 ** (exponent if exponent != 0 else 4)) % 10 elif B == 11: exponent = exponent % 10 exponent = exponent if exponent != 0 else 10 return pow(a, exponent, 11) else: return 0 def main(): if N == 0: final = M % B else: current = M % B seen = {} history = [current] seen[current] = 0 step = 1 found_cycle = False while step <= N: a = (current + D) % B exponent = current next_val = compute_pow_mod(a, exponent, B) if next_val in seen: cycle_start = seen[next_val] cycle_length = step - cycle_start remaining = N - cycle_start if remaining < 0: final = history[N] break else: mod_remaining = remaining % cycle_length final = history[cycle_start + mod_remaining] found_cycle = True break else: seen[next_val] = step history.append(next_val) current = next_val step += 1 if not found_cycle: final = history[-1] if final < 10: print(final) else: print('A') if __name__ == "__main__": main()