1. 程式人生 > >【簡單數論題】【BZOJ2219】數論之神

【簡單數論題】【BZOJ2219】數論之神

Description

  • xNA(modP)x^N\equiv A(mod~P) 在模 PP 意義下的解的數量,PP 是奇數。
  • N,A,P109N,A,P\le 10^9

Solution

  • 神仙數論題。
  • 我們知道,直接對這個方程求解有一定的困難。
  • 我們設 P=i=1cpikiP=\prod_{i=1}^cp_i^{k_i}pip_i 是質數。
  • 根據中國剩餘定理,原方程解的數量即所有方程 xNA%piki(modpiki)x^N\equiv A~\%~p_i^{k_i}(mod~p_i^{k_i}) 在模 pikip_i^{k_i} 意義下的解的數量的乘積。
  • 現在的問題即求形如 xNa(modpk)x^N\equiv a(mod~p^k) 的方程在模 pkp^k 意義下的解的數量。
  • 我們分類討論一下。

1. 當 (a,pk)=a(a,p^k)=a

  • 可以知道原方程等價於 pkxNp^k|x^N
  • xNx^N 至少含有 kk 個質因子 pp
  • 所以 pkNxp^{\lceil\frac{k}{N}\rceil}|x
  • 所以在 [0,pk)[0,p^k)
    中,xx 共有 pkpkN=pkkN\frac{p^k}{p^{\lceil\frac{k}{N}\rceil}}=p^{k-\lceil\frac{k}{N}\rceil} 個。
  • 該方程解即有 pkkNp^{k-\lceil\frac{k}{N}\rceil} 個。

2. 當 (a,pk)=1(a,p^k)=1

  • 可以知道 xpx\perp px[0,pk)x\in [0,p^k)
  • 我們找到 pkp^k 的一個原根 gg
  • 所以存在 y=indgxy=ind_gx
    q=indgaq=ind_ga
  • 原方程等價於 yNq(modφ(pk))yN\equiv q(mod~\varphi(p^k))
  • 這是一個線性同餘方程。
  • (N,φ(pk))q(N,\varphi(p^k))\nmid q 時,原方程無解。
  • 否則根據線性同餘方程的性質,這個方程在 y[0,φ(pk))y\in[0,\varphi(p^k)) 的條件下,就有 (N,φ(pk))(N,\varphi(p^k)) 個解。
  • 我們簡單證明一下這個很常用的性質:
  • 即證 axb(modp)ax\equiv b(mod~p) 若存在解,則有 (a,p)(a,p) 個模 pp 意義下的解
  • 證明:
    • 我們假設得到一個特解 x0x_0,通解表示為 x0+kp(a,p)(kZ)x_0+k·\frac{p}{(a,p)}(k\in \mathbb Z)
    • 我們定義函式 f(k)=x0+p(a,p)k(kZ)f(k)=x_0+\frac{p}{(a,p)}·k(k\in \mathbb Z)
    • 即證 f(k)[0,p)f(k)\in [0,p) 恰有 (a,p)(a,p) 個整數解。
    • 顯然 f(k)f(k) 單調遞增。
    • 我們找到一個 k0k_0 使得 f(k0)[0,p(a,p))f(k_0)\in[0,\frac{p}{(a,p)})
    • 那麼有 f(k0+(a,p))[p,p+p(a,p))f(k_0+(a,p))\in[p,p+\frac{p}{(a,p)}),且 f(k0+(a,p)1)[pp(a,p),p)f(k_0+(a,p)-1)\in[p-\frac{p}{(a,p)},p)
    • 所以當 k[k0,k0+(a,p))k\in[k_0,k_0+(a,p)) 時,滿足 f(k)[0,p)f(k)\in [0,p),即不等式有 (a,p)(a,p) 個整數解。
    • 證畢。

3. 當 1<(a,pk)<a1<(a,p^k)<a

  • 原方程可以寫成 xNapt(modpk)x^N\equiv a'p^t(mod~p^k)(a,p)=1(a',p)=1
  • 當且僅當 NtN|t,原方程有解。
  • 寫成不定方程的形式,即 xN+pkz=aptx^N+p^kz=a'p^t
  • 兩邊同除 ptp^t,得 (xptN)N+pktz=a(\frac{x}{p^{\frac{t}{N}}})^N+p^{k-t}z=a'