算法树之数论
九羽-
日有所进,月有所变,终有所成。
展开
-
( 数论专题 )【中国剩余定理】
( 数论专题 )【中国剩余定理】中国剩余定理的具体描述是这样的:给出你n个ai和mi,最后让求出x的最小值是多少。n个m两两互质:///n个mi互质const LL maxn = 20;LL a[maxn], m[maxn], n;LL CRT(LL a[], LL m[], LL n){ LL M = 1; for (int i = 0; i < n; i++) M *= m[i]; LL ret = 0; for (int i = .转载 2020-12-09 21:16:27 · 210 阅读 · 0 评论 -
( 数论专题 )【斯特灵公式】
( 数论专题 )【斯特灵公式】斯特林公式是一条用来取n的阶乘的近似值的数学公式一般来说,阶乘的计算复杂度为线性。当要为某些极大大的n求阶乘时,常见的方法复杂度不可接受。斯特林公式能够将求解阶乘的复杂度降低到对数级。而且,即使在n很小的时候,斯特林公式的取值已经十分准确。...原创 2020-11-30 21:23:36 · 719 阅读 · 0 评论 -
( 数论专题 )【 欧拉筛 】
( 数论专题 )【 欧拉筛 】线性筛是一个很基础的算法,但是我一直没学。直到一次考试,因为O(n√n)会超时,用了表筛,结果被卡了代码长度,于是开始学习欧拉筛。算法思路:对于每一个数(无论质数合数)x,筛掉所有小于x最小质因子的质数乘以x的数。比如对于77,它分解质因数是7*11,那么筛掉所有小于7的质数*77,筛掉2*77、3*77、5*77。 好吧,是不是听起来太简单了。。。。没事,重点在证明。算法证明: 首先我们要明确证明思路。如果要证明它是对的,只要保证两点:没用...转载 2020-08-11 08:47:34 · 141 阅读 · 0 评论 -
( 数论专题 )【 高斯消元 】
( 数论专题 )【 高斯消元 】作用:解一元多次方程。 例如:x+y=2, 2x+3y=5 . 解得x=1,y=1这里介绍的是高斯-约旦消元法。相对于传统的高斯消元,约旦消元法的精度更好、代码更简单,没有回带的过程。约旦消元法大致思路如下:1.选择一个尚未被选过的未知数作为主元,选择一个包含这个主元的方程。2.将这个方程主元的系数化为1。3.通过加减消元,消掉其它方程中的这个未知数。4.重复以上步骤,直到把所有式子变成形如: a1+b0+c*0……=d我们用矩阵表示每.翻译 2020-08-07 08:58:48 · 324 阅读 · 0 评论 -
( 数论专题 )【 斐波那契通项公式 + 等比数列求和公式 】
( 数论专题 )【 斐波那契通项公式 + 等比数列求和公式 】斐波那契通项公式( 证明略):例题:求当n趋向于无穷大,Sn等于什么,输出最简分数。分子是斐波那契数列,分母是K的 i 次方, K是给定的。思路:代码:#include <bits/stdc++.h>#define int long longusing namespace std;signed main(){ int T;cin>>T; ...原创 2020-06-06 22:10:07 · 2056 阅读 · 0 评论 -
HDU6397(组合+容斥原理)
HDU6397(组合+容斥原理)容斥原理可以描述如下:要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减去所有四个集合相交的部分.........依此类推,一直计算到所有集合相交的部分。(可以理解为就是先把所有单个集合全加一遍然后再去重)题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6397题意:共有m个取值范围为[0,n-1]的数字,求使得...翻译 2020-05-20 09:59:25 · 469 阅读 · 0 评论 -
( 数论专题 )【 快速傅里叶变换FFT 】【模板】
( 数论专题 )【 快速傅里叶变换FFT 】【模板】推荐:快速傅里叶变换(FFT)详解O ( nlongn ) 的计算两个多项式的乘积。例题1:洛谷P3803题目背景:这是一道多项式乘法模板题题目描述:给定一个n次多项式 F(x),和一个m次多项式 G(x)。请求出F(x)和G(x)的卷积。输入格式第一行两个整数n,m。接下来一行n+1个数字,从低到高表示F(x)的系数。接下来一行m+1个数字,从低到高表示G(x)的系数。...原创 2020-05-13 15:31:15 · 334 阅读 · 0 评论 -
求n以内的所有组合数
求n以内的所有组合数一种方法是根据组合数递推公式来算先初始化,再 组合数的递推公式,求出之后的代码: ll Ck = 1; for ( int i=1; i<k; i++ ) { Ck = (((n-i+1)*now)%mod*qpow(i,mod-2))%mod; ///注意及时取模和用逆元 }还一种是根据组合数定义来算...原创 2020-03-18 20:05:11 · 714 阅读 · 0 评论 -
( 数论专题 )【 线性基 】
( 数论专题 )【 线性基 】线性基是啥? 线性基是竞赛中常用来解决子集异或一类题目的算法,具体看下面例题。 线性基是一个数的集合,并且每个序列都拥有至少一个线性基,取线性基中若干个数异或起来可以得到原序列中的任何一个数。复习知识点:《 线性代数 》里的行阶梯矩阵。上面是行阶梯矩阵的化简步骤,最后行秩为3,那这个有什么用呢,我们可以通过化简后的这...原创 2020-02-28 20:45:41 · 518 阅读 · 0 评论 -
( 数论专题 )【 欧拉降幂 】
( 数论专题 )【 欧拉降幂 】摘要 本文主要介绍了数论中的欧拉定理,进而介绍欧拉定理的拓展及应用,结合例题展示如何使用拓展欧拉定理实现降幂取模。 在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质定理。了解欧拉定理之前先来看一下费马小定理: a是不能被质数p整除的正整数,则有a^(p-1) ≡ 1 (mod p) 欧拉给出了推广形式 若n...原创 2019-10-28 11:20:13 · 982 阅读 · 0 评论 -
( 数论专题 )【 唯一分解定理 】
( 数论专题 )【 唯一分解定理 】唯一分解定理一个数n肯定能被分解成 n = . 因为一个数肯定是由合数和质数构成的,合数又可以分解成质数和合数,最后递归下去就会变成质数的乘积。比如36 -> 2*2*3*3 -> .最后化成了质数相乘的形式。(2)中运用等比数列求和公式可化简为:好,现在给出唯一分解定理的两个小应用1. 求出数n的因子个数...原创 2019-10-28 10:41:26 · 1132 阅读 · 0 评论 -
( 数论专题 )【 乘法逆元 】
( 数论专题 )【 乘法逆元 】乘法逆元何为乘法逆元?对于两个数a,p若gcd(a,p)=1则一定存在另一个数b,使得ab ≡ 1( modp ),并称此时的b为a关于1模p的乘法逆元。我们记此时的b为inv(a)或 a−1。举个例子:5×3 ≡ 1( mod14 ) 我们称此时的3为5关于1模14的乘法逆元。如何求乘法逆元?方法一:费马小定理费马小定理:当有两...原创 2019-10-26 10:59:48 · 1472 阅读 · 0 评论 -
( 数论专题 )【 扩展欧几里得 】
( 数论专题 )【 扩展欧几里得 】扩展欧几里德算法谁是欧几里德?自己百度去先介绍什么叫做欧几里德算法有两个数 a b,现在,我们要求 a b 的最大公约数,怎么求?枚举他们的因子?不现实,当 a b 很大的时候,枚举显得那么的naïve ,那怎么做?欧几里德有个十分又用的定理: gcd(a, b) = gcd(b , a%b) ,这样,我们就可以在几乎是 log 的时间复...原创 2019-10-26 10:20:11 · 237 阅读 · 0 评论 -
( 数论专题 )【 除法分块 】
( 数论 )【 除法分块 】模板题目 Gym 101615C题目描述对于一个数X,函数f(X)表示X所有约数的和。例如:f(6)=1+2+3+6=12。对于一个X,Smart可以很快的算出f(X)。现在的问题是,给定两个正整数L,R(L<R),Smart希望尽快地算出f(L)+f(L+1)+……+f(R)的值,你能帮助Smart算出这个值吗?输入格式:输入文件仅一行,两...原创 2019-10-24 16:11:47 · 548 阅读 · 0 评论 -
(数论专题)【 快速幂 模板详解 】
(数论专题)【 快速幂 模板详解 】快速幂%mod怎么快速算出来?举个例子: 怎么快速算出来呢? 162的二进制为10100010,所以162 = ++ = 128+32+2, 这样 = * * 这样就可以得到下面的代码了; a维护的是 , 上面1,2,4,8,16,就是2的多少次方。。n&1==1的时候表示答案需要乘以这个ai代码:ll qpow( l...原创 2019-10-23 18:12:53 · 852 阅读 · 0 评论