この問題はフェルマーの小定理の応用を問います。

(x,y)(x,y) の範囲を全探索しようとしても、言語によってはかなり無謀な計画になってしまいます。そもそも (i,j)(i,j) を全探索するわけですから、O(N2)O(N^2) となって間に合いません。ではどうすればよいのでしょうか?

結論から言うと、以下のいずれかを満たすときに限り必ず (x,y)(x,y) の組は存在します。

  • Ai,AjA_i,A_j がともに KK と互いに素である (すなわち gcd(Ai,K)=1gcd(A_i,K)=1 かつ gcd(Aj,K)=1gcd(A_j,K)=1 が成り立つ)
  • Ai,AjA_i,A_j がともに KK と互いに素でない (すなわち gcd(Ai,K)1gcd(A_i,K)\neq 1 かつ gcd(Aj,K)1gcd(A_j,K)\neq 1 が成り立つ)

上において、①はフェルマーの小定理を用いて証明できます。以下がその証明です。

proof()proof(①)

背理法から示す。
正整数 a,ba,b、素数 KK とする。a,ba,b ともに KK と互いに素であるとき、条件を満たす (x,y)(x,y) の組が存在しないと仮定する。
(すなわち axby0 (mod K)a^x-b^y\equiv 0\ (mod\ K) が成り立つ (x,y)(x,y) が存在しないと仮定)

フェルマーの小定理より、

aK11 (mod K)a^{K-1}\equiv 1\ (mod\ K) 同様にして bK11 (mod K)b^{K-1}\equiv 1\ (mod\ K)

よって合同式の性質より、

aK1bK10 (mod K)a^{K-1}-b^{K-1}\equiv 0\ (mod\ K) ( 22 式の右辺、左辺同士を引いた)

となり、これは (x,y)=(K1,K1)(x,y)=(K-1,K-1) のときに条件を満たすため、仮定に矛盾が生じる。

したがって①は成り立つ。

②に対して、これは明らかに条件を満たす (x,y)(x,y) の組は存在しますが、一応証明を以下に記します。

proof()proof(②)

ここでは背理法ではなく性質を使って示す。
①の時と同じく正整数 a,ba,b (便宜上 aba\ge b とする)、素数 KK とする。a,ba,b がともに KK と互いに素でない正整数であるとする。

フェルマーの小定理より、

aKa (mod K)a^K\equiv a\ (mod\ K) 同様にして bKb (mod K)b^K\equiv b\ (mod\ K)

合同式の性質より、

aKbKab (mod K)a^K-b^K\equiv a-b\ (mod\ K)

ここで KK は素数であることから、KK の素因数は KK のみであり、他に KK の素因数はないことは自明である。
つまり a,ba,bKK と互いに素でないならば aK,bK\frac{a}{K},\frac{b}{K} はともに整数となることがわかる (ここで aK,bKa\ge K,b\ge K であることに注意※1_1)。
よって a0 (mod K)a\equiv 0\ (mod\ K) また b0 (mod K)b\equiv 0\ (mod\ K) である。

したがって ab0 (mod K)a-b\equiv 0\ (mod\ K) が成り立つことから、aKbKab0 (mod K)a^K-b^K\equiv a-b\equiv 0\ (mod\ K) より、②も成り立つ。

よって上の条件①、②毎のグループに要素を採用していって、そのグループ内から 22 要素を選べば良いです。
この時選び方は①を満たすグループ内に属する要素の個数 nn として、nC2=n(n1)2_nC_2=\frac{n(n-1)}{2} 通りあるので、
答えは nC2+NnC2=n(n1)2+(Nn)(Nn1)2_nC_2+_{N-n}C_2=\frac{n(n-1)}{2}+\frac{(N-n)(N-n-1)}{2}2_2となります。

以上から、AiA_iK K が互いに素かどうか判定するのにユークリッドの互除法などを用いて O(logAi)O(\log_{}A_i) かかるので、全体で O(Nmax(logAi))O(N\max (\log_{}A_i)) で実装できます。以下は解答例(C++,Python)です。

(解答例では上の情報から a≢0 (mod K)a\not\equiv 0\ (mod\ K)aaKK は互いに素であることの必要十分条件ですから、単に AiA_iKK で割ったあまりが 00 でないかで判定しています。ゆえに O(N)O(N) でも実装できます)

1_1 a,ba,bKK と互いに素でないことから、何らかの正整数 xx を掛け合わせてできる整数であるため、aaaxax に、bbbxbx としてもこの値は明らかに aK,bKa\ge K,b\ge K となります。

2_2 ②を満たすような選び方は、NN 個全体の要素の個数から nn 個だけ①で既に採用されているため NnC2_{N-n}C_2 通りです。いずれの条件①②に対しても独立なので、この通り数の総和が答えとなります。