树不要皮,必死无疑;人不要脸,天下|

Tx_Lcy

园龄:2年8个月粉丝:6关注:6

数论学习笔记

数论分块

f(i)g(ni),并且 f(i) 的前缀和可以快速计算。

发现 ni 的取值只有根号种,暴力做就完事了。

问题是已知 l,怎么求出最大的 r 满足 nl=nr 呢?

推一推柿子,r=nnl

做完了。


原根

本节的所有定义都是在模 p 意义下的。

如果 gcd(a,p)=1,那么我们定义 a 的阶为最小的 l 满足 al1(modp),记为 ordpa=l

有一些性质:

  • ordpa|ϕ(p)

  • alalmodordpa(modp)

  • al1(modp),则 l0(modordpa)

对于某个原根 g,它满足 ordpg=ϕ(p)

于是可以得到,b,gcd(b,p)=1b=gx,又因为这个性质,所以我们只要找出最小原根 g 就能求出所有原根。

有结论:形如 2,4,pk,2×pkp 为奇素数,k 为正整数)的数有原根。

如何求最小原根?

从小到大枚举,最小原根不会超过 n0.25(不会证明)。

暴力 checkO(n) 的,设 ϕ(n)=piai,我们可以只检验 ϕ(n)pi


杜教筛

ϕ(i)ϕ(i)×iϕ(i)×i2μ(i) 等积性函数的前缀和。

假设我们要求函数 f 的前缀和,设 S(n)=i=1nf(i)。那么我们需要寻找另一个积性函数 g,得到一个柿子:

g(1)S(n)=i=1n(fg)(i)i=2ng(i)S(ni)

也就是说,如果我们能快速求出 fg 的狄利克雷卷积前缀和以及 g 的前缀和,那么我们就能快速求出 f 的前缀和。

如果直接做是 O(n34) 的,若能线性筛筛出前 n23f(i) 的话,可以优化到 O(n23)

杜教筛的关键在于那个柿子以及 g 的选取。


离散对数

给定一个质数 p,以及一个整数 b,一个整数 n,现在要求你计算一个最小的非负整数 l,满足 bln(modp)

由于 b,p 互质,b 有逆元,所以可以在模意义下乘除 b

首先有 l=xBybxByn(modp),然后 bxBnby(modp)

B=p,那么前面的 bxB 可以暴力跳,后面的 nby 可以暴力预处理。

做完了,时间复杂度 O(p)


xAB(mod2k+1)x[0,2k]x 的个数,要求根号复杂度。

首先由于 2k+1 并不是质数,很难做。

发现 2k+1=piai,piPrime,我们可以解出所有 xAB(modpiai) 方程,然后原方程解的个数就是这些方程的解的个数的乘积(由 CRT 可知)。

考虑一个 xAB(modpiai) 怎么解,设 d 为最小解,不难发现方程的解一定是 xi=kd 的形式(一个数满足条件它的倍数一定满足)。

然后先分类讨论一下:

  • B0(modpiai),此时 B=pib,设 d=pis,那么显然有 Asai,所以 s 的最小值就是 aiA,那么 d=pis,解的个数为 piaid=piais

  • B0(modpiai),此时 B=pib×q,显然如果 b 不是 A 倍数无解,那么设 b=k×A,所以得到 (pik×y)Apib×q(modpiai),也就是 pib×yApib×q(modpiai)

    然后就可以等式两边同除 pib(吗)?

    如果上述成立,那么 pib×yApib×q(modpiai) 的解的个数等价于 yAq(modpiaib) 的解的个数,但是我们发现出问题了,原方程的解的个数应该是放缩后方程的解的个数的 pibk 倍,因为原来 y 的范围是 [0,piaik),但是后面变成了 [0,piaib),范围缩小到原来的 pibk,解数自然也缩小到原方程的 pibk

    问题转化为求方程 yAq(modpiai) 的解的个数,显然 gcd(pi,q)=1,设 pi 的原根为 g,那么有 pi=gkpy=gky

    kpky 可以 BSGS 直接来。

    然后就变成了 gky×Agkp(modpiai),然后有 ky×Akp(modϕ(piai))

    此时只要求出这个同余方程的解数即可,不难发现该方程的解与原方程的解一一对应。

    而这个同余方程若有解,解数必然为 gcd(ϕ(piai),A)

然后这题就做完了,复杂度瓶颈在于 BSGS

本文作者:Tx_Lcy

本文链接:https://www.cnblogs.com/tx-lcy/p/17903482.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Tx_Lcy  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起