[yukicoder] No.984 Inversion

スポンサーリンク

概要

問題文 →
公式解説 →

想定解よりは平易な発想で解けたと思うので、シェアします。

解法

S={(i,j)0<i<j<P} とします。次の対応を考えます。

f:SS;(i,j)(Pj,Pi).

ff=idS となるので、f は、f の不動点を除き、 S の元 2 個ずつペアにしています。P=5 なら

{(1,4)},{(2,3)},{(1,2),(3,4)},{(1,3),(2,4)}

といった要領ですね。i+j=P となるペアが f の不動点です。

(i,j) が不動点でないとします。Ai<AjPAPi<PAPjAPj<APi が成り立ちます。転倒数の偶奇にのみ興味がある状況なので、(i,j) の寄与と (Pj,Pi) の寄与が相殺します。

したがって、次を解くことに帰着されました。
以下、P が奇素数であることを仮定して、P=2K+1 としておきます。

【問題】Ai>K となる 1iK の個数を ni とするとき、ni の偶奇を決定せよ。

さらに、(1)niNK(modP) が証明できます。

(modP) で、任意の数が ±1,±2,,±K のどれかに合同で、擬似的に「符号」が考えられます。例えば、P=7,N=3 としましょう。

1N3(modP),2N1(modP),3N2(modP)

のような感じで、iNeiai(modP)ei{±1},1aiK) と表します。

このとき、ai は重複しないことが示せます:

ai=ajiN±jN(modP)i±j(modP)i=j.

よって、iaiK!(modP) が成り立ちます。K 個の式を全部かけあわせると、K!NKeiai(1)niK!(modP) で、K!P と互いに素なので、NK(1)ni(modP) が示されました。

コメント

後半パートは、有名な(?)証明です。平方剰余の第1補充則、第2補充則などはこの方法を使って i2i が「負の数」になる回数を数えると証明されます。もう少し頑張ると、平方剰余の相互法則の証明になります。

タイトルとURLをコピーしました