数论进阶
文章平均质量分 68
涉及算法竞赛中绝大多数数论知识,以进阶为主,详细附有例题
秦三码
石油大学
展开
-
Miller_Rabin 米勒拉宾概率筛【模板】
Miller_Rabin筛法是一种正确率极高,复杂度优秀的概率筛法,将质数分为2和奇质数,对于奇质数n,将n-1其分解为2^p+m,然后,取若干[1,n-1]的随机数a,本模板取了20次,每次判断是否有。a^m三1(modn)或者是否有[0,p-1]的j,满足a^(2jm)三n-1(modn)验证正确性如下,取2-1e6全部数字,进行正确性判断,正确个数1e6-1,全部正确。甚至可以将判断次数缩小至5,也能保证完全正确。......原创 2022-07-30 13:45:08 · 260 阅读 · 0 评论 -
二次剩余【模下开方】奇波拉算法
复数域中,有一个i,i^2=1。这里我们重新创建一个负数域,令i^2=a^2-n。这里有一个定理为使得勒德让函数为-1的a期望为2,也就是我们平均找两次随机数就够了。随机找一个数a,计算a^2-n函数值。直到勒德让函数值为-1,否则一直寻找。其中II指的是i^2,和复数运算一样,只不过把-1换成了II。判断一个数n是否为模数p的二次剩余(是否能在模p意义下开方)然后我们这样做的好处是,再写复数时,虚部只需要写系数就够了。也就是计算复数快速幂(a,1)1代表i的系数。...原创 2022-07-29 18:54:27 · 285 阅读 · 0 评论 -
杜教筛【莫比乌斯前缀和,欧拉函数前缀和】推导与模板【一千五百字】
杜教筛的时间复杂度还要取决于预处理数组的大小,将预处理前缀和数组处理到n^(2/3)大小会使杜教筛时间复杂度缩短至O(n^(2/3)),否则会超时。原创 2022-07-28 22:57:38 · 479 阅读 · 0 评论 -
Magic Bracelet-【群论】【Burnside引理】【矩阵快速幂】
那么我们可以枚举第1个点的颜色,输出f[n+1][k]即可,f[n+1][k]完全由f[n][]整体推出,除了去掉与1排斥的条件,都是相同的。由此我们得出第1个点属于第一个循环,第2个点属于第二个循环,直至第n个点属于第n个循环,第n+1个点属于第一个循环。也就是说,前n个点我们就可以确定这n个循环的状态,也就是整个圆的状态,只要我们求出满足题目排斥要求的n个点的排列方案数,那么整个圆也就被确定了。显然可以设f[i][j]为第i个点是j颜色的方案数,那么它由上一个点转移而来,转移方程为。......原创 2022-07-27 22:29:04 · 624 阅读 · 0 评论 -
群论-Burnside引理与Polya定理 三千字
偶数个点时,有过两点对称轴和不过点对称轴两种,前者n/2个置换,每个置换包含(n/2+1)个循环((n-2)/2+2),后者n/2个置换,每个置换n/2个循环。奇数个点时,对称轴有n条,长度为2的循环(翻转轴两侧必须相同)有(n-1)/2,长度为1的,对称轴穿过点有1个,共计(n+1)/2个循环,有n个置换,m种颜色,故。对于一个置换f,若一个元素s经过该置换后不变,则称s为f的不动点,记f不动点个数为C(f),则(置换群)所有(方案数)置换等价类个数为所有C(f)的平均值。................原创 2022-07-26 22:41:02 · 701 阅读 · 0 评论 -
The Child and Binary Tree-多项式开根求逆
如果我们递归求G(x)的逆元,我们会发现当我们递归到g(0)的时候,g(0)=0,故需要进行数学变换。g(x)是可以预处理的,然后求出1-4G(x),再开根号,再求逆元,再扩大二倍,细节多,代码长。那么我们枚举树的根节点,左右子树大小,就可以得到F(x)我们设F(x)为总权值是x树的存在方案数。即F(x)=G(x)F(x)^2。然而值得注意的是,x=0,时的常数项1。......原创 2022-07-25 23:06:25 · 101 阅读 · 0 评论 -
多项式开根
对于要开根的H(x),求出开根后的G(x)故我们要求出H(x)的逆元,2的逆元。原创 2022-07-25 19:29:15 · 275 阅读 · 0 评论 -
NTT(快速数论变换)多项式求逆 一千五百字解析
我们对x^n进行向上取整开根号操作,即。次幂上都是0,否则他们本身就无法被。所以减式构成的多项式在0-进行乘F(x)操作再由。由此G(x)用NTT求解。原创 2022-07-24 22:45:08 · 299 阅读 · 0 评论 -
原根与NTT 五千字详解
第三步,枚举最小原根,最小原根值一般很小,可以直接枚举。根据原根定义,其阶数为phi[p],判断依据是其phi[p]次幂应该modm=1。,枚举欧拉函数质因数分解后的因子,x的欧拉函数除以因子次幂在modm情况下不能等于1.即在模阶意义下相同的两个指数,对应modm下的幂数也相同。设m>1,g为正整数,且g,m互质,g是m的原根当且仅当,第二步,读入判断数字,首先判断是否具有原根,有的话,对其。才存在原根,其中p是奇数,是质数,也就是奇质数。,即a的阶等于m的欧拉函数,则称a为原根。............原创 2022-07-22 16:45:35 · 800 阅读 · 0 评论 -
拉格朗日插值法 两千字详解
我们取1-->k+2这一段,f(i)可以进行k+2次快速幂进行累加求解,后面的一串,分子可以搞一个前缀后缀积,分子其实就是fac[x[i]-1]+flag*fac[x[k+2]-x[i]]flag在N-x[i]为奇数时取负数。而k+1次多项式又可以被我们用k+1+1个点进行确定,所谓确定,意思是我们k+2个点进行运算的结果之和就是f(n)的结果。b0=1b1=2^kb2=3^k...为k阶等差数列,则bn通项是一个k次多项式,an是一个k+1次多项式。......原创 2022-07-21 22:19:10 · 392 阅读 · 0 评论 -
快速傅里叶变换 ,拉格朗日插值法,三千字附例题,姊妹篇FFT与字符串匹配的应用
的三次幂求得的结果是相当于三层嵌套循环得到的结果,显然,其中重复的情况有(i==j,i==k,j==k,i==j==k四种情况)另外,我们扣除这些i,j,k带来的重复之后,剩下的虽然都是i,j,k不同的情况总和,但我们在嵌套循环的时候,i本身的选取三个循环都可以选到,一旦i确定,j,k的两种情况就导致了3*2的重复。而对于i==j==k的情况,i==j的时候我们减了一次,j==k时减了1次,i==k时又减了一次,多减了两次,还要再加上二倍才行。首先本题是要求i,j,k有次序且不能重复的。..........原创 2022-07-21 15:48:14 · 340 阅读 · 0 评论 -
FFT快速傅里叶变换在字符串匹配中的应用详解【附模板,例题】五千字详解
第一项来说,一个确定的A串其值是定值T,第二项来说,其意义是从x结束的前缀里面,减去x-m的前缀,剩下x-m+1到x的部分G,第三部分,m-i-1+x-m+i+1=x分别设为i,j,0原创 2022-07-21 14:15:20 · 784 阅读 · 0 评论 -
生成函数(线性递推关系,生成函数概念与公式推导,暴力计算)四千字详细解析,附例题
多项式与形式幂级数多项式形式幂级数记号A(x)的x^n项的系数[x^n]A(X)常生成函数一个数列{an}对应的常生成函数O(n^2)循环计算即可其中幂级数的系数为其选择的方案数,x的指数代表选了几个。原创 2022-07-19 15:10:48 · 1355 阅读 · 1 评论 -
线性基性质功能代码实现三千字详解,附例题
考察性质2,3.根据题意,我们发现一个异或子段可以是前缀异或数组相异或得到的,所以线性基可以记载全部n个异或前缀数组的异或情况,性质2保证了它们不可能存在异或结果是0的情况,性质3保证了这些子段的异或值都能够被表示。而值得注意的是,如果全部n个数异或之后不为0,那么我们线性基一定能够将这n个数都囊括进去,再利用这个大的前缀异或值去“分解”剩余小的。我们把开关看成原数列,而灯的开闭就是其二进制分解的结果,两个或者若干个开关异或的结果就是最终灯的开闭情况,用线性基表示全部结果,考察性质5。...原创 2022-07-17 20:34:29 · 197 阅读 · 1 评论 -
矩阵与高斯消元【矩阵乘法,高斯消元求线性方程组,求行列式】 全网最详,附例题与姊妹篇 一万三千字详解
这样的合理性在于[L,R]之间所有矩阵分别乘x个base矩阵,所得到的base[1][1]之和,与先把矩阵相加,再乘x个base矩阵所得结果相同。第一项操作对于第二项操作的影响在于每次加x,相当于对f[i]对应的base矩阵进行了幂数+x,也就是乘上一个幂数为x的base矩阵。首先我们是无法预处理出10^9那么大的斐波那契数列的,也就意味着我们sum数组不能是单纯的数字,应该是矩阵形式。在这里不得不提一个规律,那就是base数组的x次幂所得到的base[1][1]正好是f(x-1)......原创 2022-07-16 23:09:47 · 631 阅读 · 0 评论 -
积性函数与莫比乌斯反演 六千字全网最详解(附例题)
积性函数 如果函数 f,满足对于任意一对互质的正整数p,q,都有f(pq)=f(p)f(q),则称f为积性函数。条件 p,q互质f(pq)=f(p)f(q)欧拉函数(少于或者等于n的数里面与n互质的数的数目)也是积性函数d(n)=n的正因子数量 d也是积性函数设,f(n),g(n)为积性函数,则h(n)=f(n)g(n)也是积性函数,即积性函数的乘积也是积性函数设f是积性函数,假设 ,为n质因数分解之后的结果f(n)=下面利用积性函数性质求解积性函数欧拉筛求积性函数法例题1原创 2022-07-11 16:02:04 · 899 阅读 · 1 评论 -
数论进阶之-整数分解与筛法(GCD、exGCD、(Eratosthenes)埃氏筛、欧拉筛、区间筛,质因数分解,Stein算法)五千字
目录一些定义欧几里得算法扩展欧几里得算法例题 青蛙的约会(POJ 1061) 埃氏筛法区间筛例题欧拉筛例题质因数分解 例题__gcd(a,b)== __gcd(b,a%b) (a%b==0时,return a)例题 天平aL=bR二者同时除以__gcd(a,b)a/__gcd(a,b) L=b/__gcd(a,b) R 红色互质 L的存在导致a/__gcd(a,b) | b/__gcd(a,b) R 进而a/__gcd(a,b) | R进而,R最小时是a/__gcd(a,b)同理可求得L最小值证毕若a原创 2022-06-06 16:28:19 · 348 阅读 · 1 评论