ABC212-G Power Pair の素因数分解に 時間かかるとしたときの 解法を紹介します。
問題リンク
問題概要
を満たす の組であって、ある正整数 が存在して を満たすものの個数 を求めよ。
問題変形
まず、ある素数 について原始根 がかならず つは存在する(参考)ことと、 のうちどちらかが ならばもう一方も でなければ条件が成り立たないことから、問題は次のように言い換えられます。
を満たす の組であって、ある正整数 が存在して を満たすものの個数 を求めよ。
本題
ここで、 を固定した時にありうる の個数は ですから、求めるものは です。
この値は に等しいです(ただし、 は を満たす の個数を表します)
ここで、 について考えてみます。 を満たす の個数は を満たす の個数と等しく、またこの値は ( はオイラーのφ関数を表します)と等しいです。
これより、求める値は です。
ここで、あとでわかりやすくするために と変形しておきます。
ところで、 は が ( ならば ) と表せるとき、次のように求められます。
の約数はすべての について を満たす数列 を用いて と表すことができ、またこの形で表現できるもののみが の約数です。
これらより、求めるものは として です。これを整理して です。
ここで、この問題は次のような問題に帰着します。
個の正整数列 が与えられます。各 について から一つの要素を選びそれらの積を取って "スコア" とします。すべての選び方について "スコア" を求め、それらの和を出力してください。
この問題の答えは と表せるため、 で求めることができます。
ここで、 の重複を認める素因数の個数( の和)は 、 の重複を認めない素因数の個数( の値)は なので、 で解くことができました。