NTL1B べき乗

はじめに

カテゴリー競プロ初中級者100問では、Qiitaにて@e869120さんがレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】としてまとめられている100問をPythonで解いています。

全問題の一覧はこちらです

問題

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=NTL_1_B

Pythonでべき乗の計算をする場合は組み込み関数のpowを用いることができます。
ただし、下記のように愚直に実装すると間に合いません。

1
pow(m,n) % MOD

これはpow(m,n)が計算途中でとても巨大な数となってしまい、処理に時間がかかるためです。

しかし、合同式の性質からpow(m,n)計算の過程で剰余を取っても問題はありません。この工夫で計算途中で巨大な数になることを防げるはずです。

powにはそのための呼び出し方法が実装されており、pow(m,n,MOD)のように呼び出すことができます。

詳しくは公式リファレンスを参考にして下さい。なお、Pythonpow繰り返し二乗法で実装されています。

コード

これらの考察から解答はいたってシンプルなコードになります。

1
2
3
MOD = 10**9+7
m, n = map(int, input().split())
print (pow(m,n,MOD))

記事情報

  • 投稿日:2020年4月30日
  • 最終更新日:2020年5月10日