您的位置:首页 > 其它

[专题训练]数论专题1

2016-07-25 15:53 211 查看

Preface

暑假来了,终于有时间扛专题了。

太简单的东西就不讲了。

Paper

扩展欧几里得算法

费马小定理和欧拉定理

费马小定理:∀(a,p)=1,p∈P有ap−1≡1(modp)。

证明:∵(a,m)=1∴∀i∈[1,p),ai≢p(modp)且ai两两不同余

∴ai属于模p除了[0]以外的各个剩余类环

∴∏p−1i=1i≡∏p−1i=1ai(modp)

∴ap−1≡1(modp)

欧拉定理:∀(a,m)=1有aφ(m)≡1(modm)

证明类似,略

中国剩余定理(CRT)

求方程

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x≡a1(modn1)x≡a2(modn2) ⋮x≡ak(modnk)

最小整数解x,其中ni两两互质。

我们要想办法构造一个x,它是若干ai乘上相应系数的和,这些系数要满足在模对应位时为1,模其它位时为0。很容易想到使用逆元。

令N=∏ki=1ni,mi=Nni,xi≡(mi)−1(modni),那么x≡∑ki=1aiximi(modN)一定符合条件。

如果ni不是两两互质怎么办?我们每次可以合并两个方程:

{x≡a1(modn1)x≡a2(modn2)

令x=k1n1+a1=k2n2+a2,即有k1n1−k2n2=a2−a1。我们要找一个符合条件的解r只需要用扩展欧几里得解那个不定方程再回代,就可以将方程合并为x≡r(modlcm(n1,n2))。

组合数取模

我们要求Cmn(modk),且k∈P。

Lucas定理

适用范围:n,m很大,logkmax(n,m)和k都不大

Lucas定理:Cmn≡∏i=0dCmini(modk)

ni,mi为n,m写成k进制下的第i位,k∈P。

证明:首先我们要知道这条式子

(a+b)p≡ap+bp(modp)(p∈P)(a+b)pi≡api+bpi(modp)(p∈P)

这个我在Cipolla′s Algorithm学习小记里面已经证明了,不再累赘。

∑m=0nCmnxm=(x+1)n=∏i=0d((x+1)pi)ni(快速幂的思想)≡∏i=0d(xpi+1)ni=∏i=0d⎛⎝∑j=0niCjnixpij⎞⎠(二项式定理逆着用)=∏i=0d⎛⎝∑j=0k−1Cjnixpij⎞⎠(当n<m时Cmn=0)=∑m=0n(∏i=0dCmini)xm(这一步比较难理解,考虑上一个式子中xm的指数m只能由m在k进制各位乘起来得到)(modk)

由此得到Lucas定理,证毕。

有了这个定理,我们就可以愉快的嘿嘿嘿了。就算n,m是高精度数我们也可以搞。

预处理阶乘

适用范围:n,m不大,k很大且与小于等于max(n,m)的所有正整数互质。

直接套用组合数阶乘公式,预处理阶乘和阶乘的逆元。

关于阶乘的逆元,我们可以用O(log2n)时间处理求(n!)−1,然后((n−1)!)−1≡n(n!)−1(modk),线性时间得出所有阶乘的逆元。

快速阶乘

适用范围:logkmax(n,m)和k不大,k=pc(p∈P)

首先预处理1到k中所有不是p倍数的数的阶乘fi。

然后假设我们要求fact(n),那么

fact(n)≡1×2×...×k×(k+1)×(k+2)×...×2k×(2k+1)×(2k+2)×...×n≡fact(k)⌊nk⌋fact(n mod k)(p×2p×...×⌊np⌋p)≡fact(k)⌊nk⌋fact(n mod k)fact(⌊nk⌋)p⌊nk⌋(modk)

注意p的指数要递归统计,最后再乘上来,这些细节自己考虑。

时间复杂度O(klogkn)。

中国剩余定理

适用范围:令k′为k分解质因数后最大的pc(p∈P)。logk′max(n,m)和k′不大

将k分解,每个质因子次幂单独做,然后中国剩余定理合并。

离散对数/大步小步算法(BSGS)

给定a,b,n,求满足ax≡b(modn)((a,n)=1)的x(x∈[0,n))。保证a为模n意义下的一个原根,即模n意义下ai包含了所有小于n的与n互质的数。

大步小步算法(BSGS)是一个典型的空间换时间的例子。

我们令p=⌈n−1−−−−−√⌉,考虑使用p重写(rewrite乱入?)a的指数,即ax=akp+r(r∈[0,p))。

我们先枚举r,计算出ar(r∈[0,p))的值,然后将它们(的逆元)扔到哈希表或是map之类的数据结构里面存好。然后再枚举k,计算akp。如果存在ax≡b(modn),那么一定有akp≡a−rb(modn),我们已经事先将a−r扔到数据结构里面,现在我们直接查找就好了。由于p是O(n√)的,因此k也是O(n√)的。

时间复杂度O(n√)(忽略数据结构复杂度)。

二次剩余:Cipolla′s Algorithm

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: