はじめに
カテゴリー競プロ初中級者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)
のように呼び出すことができます。
詳しくは公式リファレンスを参考にして下さい。なお、Python
のpow
は繰り返し二乗法
で実装されています。
コード
これらの考察から解答はいたってシンプルなコードになります。
1 | MOD = 10**9+7 |
記事情報
- 投稿日:2020年4月30日
- 最終更新日:2020年5月10日