数论笔记 (20200205)

类欧几里得算法:

∑ x = 0 n ⌊ a x + b c ⌋ \sum_{x=0}^n\lfloor {ax+b\over c}\rfloor x=0ncax+b
类欧几里得算法的推导

欧拉定理:

对于 ( a , m ) = 1 (a,m)=1 (a,m)=1,有 a φ ( m ) ≡ 1   (   m o d     m ) a^{\varphi(m)}\equiv1 ~(\bmod ~m) aφ(m)1 (mod m)

扩展欧拉定理:

对于 ( a , m ) ≠ 1 (a,m)\neq 1 (a,m)=1,有 a b ≡ a min ⁡ ( b , b   m o d   φ ( m ) + φ ( m ) )   (   m o d     m ) a^b\equiv a^{\min(b,b\bmod\varphi(m)+\varphi(m))}~(\bmod~m) abamin(b,bmodφ(m)+φ(m)) (mod m)
等价的表述为对于 b ≥ φ ( m ) b\ge\varphi(m) bφ(m),有 a b ≡ a b + φ ( m )   (   m o d     m ) a^b\equiv a^{b+\varphi(m)}~(\bmod~m) abab+φ(m) (mod m)
证明:
首先证明对于质数 p p p成立,令 m = s ∗ p r m=s*p^r m=spr,且 ( s , p ) = 1 (s,p)=1 (s,p)=1,即将 m m m中的 p p p提出来。
因为 ( s , p ) = 1 (s,p)=1 (s,p)=1,所以 p φ ( s ) ≡ 1   (   m o d     s ) p^{\varphi(s)}\equiv 1~(\bmod~s) pφ(s)1 (mod s)
因为 φ ( s ) ∣ φ ( m ) \varphi(s)|\varphi(m) φ(s)φ(m),所以 p φ ( m ) ≡ 1   (   m o d     s ) p^{\varphi(m)}\equiv 1~(\bmod~s) pφ(m)1 (mod s)
根据同余性质,左右以及模数同时乘以 p r p^r pr,有 p φ ( m ) + r ≡ p r   (   m o d     m ) p^{\varphi(m)+r}\equiv p^r~(\bmod~m) pφ(m)+rpr (mod m)
φ ( m ) = φ ( s ) ( p − 1 ) p r − 1 ≥ p r − 1 ≥ 2 r − 1 ≥ r \varphi(m)=\varphi(s)(p-1)p^{r-1}\ge p^{r-1}\ge 2^{r-1}\ge r φ(m)=φ(s)(p1)pr1pr12r1r,即 φ ( m ) ≥ r \varphi(m)\ge r φ(m)r
所以当 b ≥ r 时 b\ge r时 br p b ≡ p φ ( m ) + b   (   m o d     m ) p^{b}\equiv p^{\varphi(m)+b}~(\bmod~m) pbpφ(m)+b (mod m),而 r ≤ φ ( m ) r\le\varphi(m) rφ(m),得证。

然后证明对于 p k p^k pk成立:
b ≥ φ ( m ) b\ge\varphi(m) bφ(m)时, ( p k ) b = p k b ≡ p k b + k φ ( m ) ≡ ( p k ) b + φ ( m ) (p^k)^b=p^{kb}\equiv p^{kb+k\varphi(m)}\equiv (p^k)^{b+\varphi(m)} (pk)b=pkbpkb+kφ(m)(pk)b+φ(m),得证。

对于任意的 a a a,将其分解为 p k p^k pk后即可得证。


例题:上帝与集合的正确用法

2 2 2 . . .   m o d   p 2^{2^{2^{...}}}\bmod p 222...modp p ≤ 1 0 9 p\le10^9 p109(不一定为质数)

结论: φ ( φ ( n ) ) ≤ 1 2 n \varphi(\varphi(n))\le \frac 12 n φ(φ(n))21n
证明: φ ( n ) = n ∗ ∏ p i − 1 p i \varphi(n)=n*\prod\frac {p_i-1}{p_i} φ(n)=npipi1,如果 n n n为奇数,那么 φ ( n ) \varphi(n) φ(n)一定为偶数;如果 n n n为偶数,那么 φ ( n ) ≤ 1 2 n \varphi(n)\le \frac 12n φ(n)21n

应用拓展欧拉定理: 2 2 2 . . . ≡ 2 2 2 2 . . .   m o d     φ ( p )   + φ ( p )   (   m o d     p ) 2^{2^{2^{...}}}\equiv2^{2^{2^{2^{...}}}\bmod~\varphi(p) ~+\varphi(p)}~(\bmod~p) 222...2222...mod φ(p) +φ(p) (mod p),递归,由上面的结论递归的层数为 O ( l o g p ) O(logp) O(logp)层。


Pollard_Rho和Miller_Rabin

中国剩余定理:

k k k个方程组: X ≡ x i   (   m o d     m i ) X\equiv x_i~(\bmod~m_i) Xxi (mod mi) m i m_i mi两两互质,求 X X X
M = ∏ m i M=\prod m_i M=mi M i = M m i M_i=\frac M{m_i} Mi=miM M i − 1 M_i^{-1} Mi1 M i M_i Mi m i m_i mi的逆元。 X = ∑ i = 1 k x i ∗ M i ∗ M i − 1   (   m o d     M ) X=\sum\limits_{i=1}^kx_i*M_i*M_i^{-1}~(\bmod~M) X=i=1kxiMiMi1 (mod M)

扩展中国剩余定理:

模数不一定互质,将方程依次合并:
{ x ≡ a   (   m o d     b ) x ≡ c   (   m o d     d ) \begin{cases}x\equiv a~(\bmod~b)\\x\equiv c~(\bmod~d)\end{cases} {xa (mod b)xc (mod d)
可知 b ⋅ t + a ≡ c   (   m o d     d ) b\cdot t+a\equiv c~(\bmod~d) bt+ac (mod d)
exgcd \text{exgcd} exgcd求出 t ≡ c − a ( b , d ) ∗ ( b ( b , d ) ) − 1   (   m o d     d ( b , d ) ) t\equiv \frac {c-a}{(b,d)}*(\frac b{(b,d)})^{-1}~(\bmod~\frac {d}{(b,d)}) t(b,d)ca((b,d)b)1 (mod (b,d)d)
代回得 x ≡ b ⋅ t + a   (   m o d     [ b , d ] ) x\equiv b\cdot t+a~(\bmod~[b,d]) xbt+a (mod [b,d])
易验证 x x x满足原方程,且方程的通解为 x + k [ b , d ] x+k[b,d] x+k[b,d]

两个定理都旨在求出一个特解,易发现在模数范围内只有一个解,通解形式就是特解±模数的倍数。

例题:NOI2018 屠龙勇士

例题:CF#338D GCD Table

在这里插入图片描述
在这里插入图片描述


阶:

在这里插入图片描述

BSGS:

BSGS算法

多项式复合:

在这里插入图片描述
在这里插入图片描述
直接暴算 g ( x ) i g(x)^i g(x)i O ( n m l o g m ) O(nmlogm) O(nmlogm)的,乘系数加起来是 O ( n m ) O(nm) O(nm)的,复杂度瓶颈在算 g ( x ) i g(x)^i g(x)i
可以预处理 g ( x ) , g ( x ) 2 , g ( x ) 3 . . . g ( x ) S g(x),g(x)^2,g(x)^3...g(x)^S g(x),g(x)2,g(x)3...g(x)S,以及 g ( x ) S , g ( x ) 2 S , . . . g(x)^S,g(x)^{2S},... g(x)S,g(x)2S,...
那么 g ( x ) i + k S = g ( x ) i ∗ g ( x ) k S g(x)^{i+kS}=g(x)^i*g(x)^{kS} g(x)i+kS=g(x)ig(x)kS
所以可以先对每块求出 ∑ i = 0 S − 1 f i + k S ∗ g ( x ) i \sum_{i=0}^{S-1}f_{i+kS}*g(x)^i i=0S1fi+kSg(x)i,再乘上 g ( x ) k S g(x)^{kS} g(x)kS
复杂度 O ( n m + n ⋅ m l o g m ) O(nm+\sqrt n\cdot mlogm) O(nm+n mlogm)


Lucas定理:

在这里插入图片描述
( n m ) \binom nm (mn)中质因子 p p p的个数为 ∑ i ⌊ n p i ⌋ − ⌊ m p i ⌋ − ⌊ n − m p i ⌋ = p 进 制 下 m + ( n − m ) 的 进 位 次 数 \sum\limits_i \lfloor\frac n{p^i}\rfloor-\lfloor\frac m{p^i}\rfloor-\lfloor\frac {n-m}{p^i}\rfloor=p进制下m+(n-m)的进位次数 ipinpimpinm=pm+(nm)

例题:
在这里插入图片描述
在这里插入图片描述
例题2:
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
r = 1 ∗ 2... ∗ ( p − 1 ) ∗ ( p + 1 ) ∗ ( p + 2 ) . . . ∗ ( 2 p − 1 ) ∗ ( 2 p + 1 ) . . . ∗ ( ⌊ n p ⌋ ∗ p − 1 ) ∗ 剩 下 部 分 r=1*2...*(p-1)*(p+1)*(p+2)...*(2p-1)*(2p+1)...*(\lfloor\frac np\rfloor*p-1)*剩下部分 r=12...(p1)(p+1)(p+2)...(2p1)(2p+1)...(pnp1)
F F F r r r ≤ p k \le p^k pk部分的乘积,那么 r = F ⌊ n p k ⌋ ∗ 剩 下 部 分 r=F^{\lfloor\frac n{p^k}\rfloor}*剩下部分 r=Fpkn
( n m ) = r n ∗ ( r m ) − 1 ∗ ( r n − m ) − 1 ∗ p t n − t m − t n − m \binom nm=r_n*(r_m)^{-1}*(r_{n-m})^{-1}*p^{t_n-t_m-t_{n-m}} (mn)=rn(rm)1(rnm)1ptntmtnm

下面这两个比较懵,存疑
在这里插入图片描述
在这里插入图片描述


Stern-Brocot Tree

待更。


Min25筛学习笔记


例题:

在这里插入图片描述
[ ( x , n ) = d ] v = [ ( x d , n d ) = 1 ] v = ∑ k ∣ x d , k ∣ n d μ ( k ) v [(x,n)=d]v=[(\frac xd,\frac nd)=1]v=\sum_{k|\frac xd,k|\frac nd}\mu(k)v [(x,n)=d]v=[(dx,dn)=1]v=kdx,kdnμ(k)v
直接修改 a a a不好修改,设辅助数组 a i = ∑ d ∣ i f ( d ) a_i=\sum_{d|i}f(d) ai=dif(d),则 f ( i ) = ∑ x ∣ i a ( x ) ∗ μ ( i x ) f(i)=\sum_{x|i}a(x)*\mu(\frac ix) f(i)=xia(x)μ(xi)。考虑对 f f f进行修改,枚举 k k k(下面的 d d d是定值, x x x是枚举的):
f ( i ) + = ∑ x ∣ i a ( x ) μ ( i x ) = ∑ k d ∣ x ∣ i μ ( k ) v μ ( i x ) = μ ( k ) v ∑ k d ∣ x ∣ i μ ( i x ) f(i)+=\sum_{x|i}a(x)\mu(\frac ix) =\sum_{kd|x|i}\mu(k)v\mu(\frac ix) =\mu(k)v\sum_{kd|x|i}\mu(\frac ix)\\ f(i)+=xia(x)μ(xi)=kdxiμ(k)vμ(xi)=μ(k)vkdxiμ(xi)
i ′ = i k d , x ′ = x k d i'=\frac i{kd},x'=\frac x{kd} i=kdi,x=kdx
= μ ( k ) v ∑ x ′ ∣ i ′ μ ( i ′ x ′ ) = μ ( k ) v [ i = = k d ] =\mu(k)v\sum_{x'|i'}\mu(\frac {i'}{x'})\\=\mu(k)v[i==kd] =μ(k)vxiμ(xi)=μ(k)v[i==kd]
所以只需要枚举 n d \frac nd dn的约数 k k k,令 f [ k d ] + = μ ( k ) v f[kd]+=\mu(k)v f[kd]+=μ(k)v即可。

∑ i = 1 n a ( i ) = ∑ i = 1 n ∑ d ∣ i f ( d ) = ∑ i = 1 n ∑ d = 1 n i f ( d ) \sum_{i=1}^na(i)=\sum_{i=1}^n\sum_{d|i}f(d)=\sum_{i=1}^n\sum_{d=1}^{\frac ni}f(d) i=1na(i)=i=1ndif(d)=i=1nd=1inf(d)
维护 f f f的前缀和然后整除分块回答询问即可。

例题:

∑ i = 1 n μ 2 ( i ) , n ≤ 1 0 18 \sum_{i=1}^n\mu^2(i),n\le10^{18} i=1nμ2(i)n1018,即求 n n n以内无平方因子数的个数。
μ 2 ( i ) = ∑ d 2 ∣ i μ ( d ) \mu^2(i)=\sum_{d^2|i}\mu(d) μ2(i)=d2iμ(d)
∑ i = 1 n μ 2 ( i ) = ∑ i = 1 n ∑ d 2 ∣ i μ ( d ) = ∑ d = 1 n μ ( d ) ⌊ n d 2 ⌋ \sum_{i=1}^n\mu^2(i)=\sum_{i=1}^n\sum_{d^2|i}\mu(d)=\sum\limits_{d=1}^{\sqrt n}\mu(d)\lfloor\frac n{d^2}\rfloor i=1nμ2(i)=i=1nd2iμ(d)=d=1n μ(d)d2n
整除分块的复杂度是 O ( n 1 3 ) O(n^{\frac 13}) O(n31)的,当 d ≤ n 1 3 d\le n^{\frac 13} dn31时只有 n 1 3 n^{\frac 13} n31种,当 d > n 1 3 d>n^{\frac 13} d>n31 ⌊ n d 2 ⌋ < n 1 3 \lfloor\frac n{d^2}\rfloor<n^{\frac 13} d2n<n31,而杜教筛筛 μ ( d ) \mu(d) μ(d)的前缀和的复杂度按照每次都跑满 O ( n 2 3 ) O(n^{\frac 23}) O(n32)算复杂度为 O ( n 3 7 ) O(n^{\frac 37}) O(n73)(实际比这个小)

例题三连:

51nod1222 最小公倍数计数
51Nod1220 约数之和
SPOJ DIVCNT2 - Counting Divisors

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值