結果

問題 No.181 A↑↑N mod M
コンテスト
ユーザー cologne
提出日時 2026-02-25 12:35:36
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 69 ms / 5,000 ms
コード長 1,063 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 428 ms
コンパイル使用メモリ 77,908 KB
実行使用メモリ 68,468 KB
最終ジャッジ日時 2026-02-25 12:35:42
合計ジャッジ時間 5,448 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 6
other AC * 37
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys

from typing import List, Tuple


def int1(x: str, /): return int(x) - 1


def input(): return sys.stdin.readline().rstrip('\n')


def dbg(*args, **kwargs):
    print(*(repr(arg) for arg in args), *(f'{k}: {repr(v)}' for k, v in kwargs.items()), sep='; ', file=sys.stderr)


def phi(m):
    a = m
    i = 2
    while i * i <= m:
        if m % i == 0:
            a = a // i * (i - 1)
            while m % i == 0:
                m //= i
        i += 1
    if m != 1:
        a = a // m * (m - 1)
    return a


def calc(a, n, m):
    if n == 0 or m == 1:
        return 1
    up = calc(a, n - 1, phi(m))
    x = 1
    for i in range(up):
        x *= a
        if x >= m:
            break
    else:
        return x
    return pow(a, up, m) + m


def main():
    a, n, m = map(int, input().split())
    return calc(a, n, m) % m


def _start():
    ret = main()

    if ret is not None:
        if isinstance(ret, List) or isinstance(ret, Tuple):
            print(*ret)
        else:
            print(ret)


if __name__ == '__main__':
    _start()
0