AtCoder Beginner Contest 228 E 問題 Integer Sequence Fair
問題
提出解答
問題の概要
正の整数 に対して, で 以上 以下の整数全体の集合とする. 集合 の濃度 (元の個数) を で割った余りを求めよ.
制約
- 入力は全て整数である.
解法
以降では, 説明のために, 整数 に対して, とする.
である. よって, 求めるべき値は, である.
ここで, を求めるためには, 繰り返し二乗法によって, で求められるが, 今回の問題では絶望的である. そこで, この問題では の性質を利用する.
は素数である. ここで, 素数の剰余において, 以下の重大な定理がある.
よって, 定理の適用条件に注意することして, 以下のような解法になる ( とする).
- ならば, なので, である.
- ならば, とすることにすると, Fermat's Little Theorem から, である.
計算量は, 繰り返し二乗法によって, である.