浴谷夏令营2017.8.1数论的整理
2017-10-24 21:05
204 查看
知识点:
1.2线性筛法:对于每个数x,遇到x%prime[i]==0的第一个i退出,使得每个合数都被它的最小质因子筛掉 O(n)
例1.1H-合成数poj3292:暴力的一题 筛数打标记O(nlogn)
例1.2求最小质数:平均每O(logn)会出现一个质数,于是暴力即可 O(sqrt(n)logn)
1.3 辗转相除法
gcd(a,b)=gcd(a-b,b)=gcd(b,a%b) 时间复杂度O(logn)
ab=gcd(a,b)*lcm(a,b)
二进制优化
extgcd
例1.3 gcd区间
题目来源:洛谷1890
dp+暴力
时间复杂度O(n^2logn+m)
例1.4 最大公约数和最小公倍数
题目来源:洛谷1029
质因数分解即可
2.2 线性求逆元
i^-1 ≡ -[p/i]*(p%i)^-1
2.3 费马小定理
若p是质数,则a^p-1 ≡1 (mod p)
2.4 欧拉定理
若(a,p)=1,则a^φ(p) ≡1 (mod p)
2.5 快速求逆元
extgcd或快速幂
例2.1 青蛙的约会
题目来源:poj1061
同余方程,记得取最小解
2.6 中国剩余定理
解方程x ≡ai (mod pi),其中pi两两互质。
记qij表示pi在模pj意义下的逆元。
x ≡ Σ(ai*Σ(pj*qji)) (mod p1p2…pn)。
例2.2 Biorhythms
题目来源:poj1006
典型的中国剩余定理
如果对于任意正整数a,b,都有f(a)*f(b)=f(ab),则称f为完全积性函数。
如果对于任意满足gcd(a,b)=1的正整数a,b,都有f(a)*f(b)=f(ab),则称f为积性函数。
3.2 求欧拉函数
线性筛法即可
例3.1 Visible Lattice Points
题目来源:poj3090
模板题
有一个n*m的点阵,每个点可以走到8个方向上的点。
水平或垂直方向上相邻的点之间的距离为1。
你需要从某个点出发,遍历所有的点并回到起点。
问最短路程。 n,m<=10000。
诡异的一题,分类讨论奇偶性
4.2 sumdiv
题目来源:poj1845
分解质因数+等比数列通项公式
4.3 奶牛分厩
题目来源:洛谷1154
很巧妙的做法
a%k==b%k等价于k|(a-b)
然后给所有的xi-xj打标记
之后用类似埃氏筛法的思想从大到小依次筛
从大到小枚举i,如果i的倍数中存在一个数是因数,那么i也是因数。
4.4 数列
题目来源:洛谷1062
二进制判断大小,k进制输出答案即可
4.5 Hankson的趣味题
筛到45000左右,依次判断每个质数即可
4.6 GCD SUM
考虑枚举k,求出gcd恰好为k的数对个数。
不难发现gcd是k的倍数的数对个数是[n/k]2。
把gcd是2k,3k,4k,….的个数扣掉就好啦。
4.7 数三角形
组合数+gcd
1.整数
1.1埃氏筛法:暴力枚举打表 O(nloglogn)1.2线性筛法:对于每个数x,遇到x%prime[i]==0的第一个i退出,使得每个合数都被它的最小质因子筛掉 O(n)
例1.1H-合成数poj3292:暴力的一题 筛数打标记O(nlogn)
例1.2求最小质数:平均每O(logn)会出现一个质数,于是暴力即可 O(sqrt(n)logn)
1.3 辗转相除法
gcd(a,b)=gcd(a-b,b)=gcd(b,a%b) 时间复杂度O(logn)
ab=gcd(a,b)*lcm(a,b)
二进制优化
1 void exgcd(int a,int b,int c,int &x,int &y,int &p) 2 { 3 if(b==0) 4 if(c%a==0) 5 { 6 x=c/a; 7 y=0; 8 } 9 else 10 p=-1; 11 else 12 { 13 int xx,yy; 14 exgcd(b,a%b,c,xx,yy,p); 15 if(p==-1) 16 return; 17 x=yy; 18 y=xx-a/b*yy; 19 } 20 }
extgcd
例1.3 gcd区间
题目来源:洛谷1890
dp+暴力
时间复杂度O(n^2logn+m)
例1.4 最大公约数和最小公倍数
题目来源:洛谷1029
质因数分解即可
2.同余
2.1 快速幂2.2 线性求逆元
i^-1 ≡ -[p/i]*(p%i)^-1
2.3 费马小定理
若p是质数,则a^p-1 ≡1 (mod p)
2.4 欧拉定理
若(a,p)=1,则a^φ(p) ≡1 (mod p)
2.5 快速求逆元
extgcd或快速幂
例2.1 青蛙的约会
题目来源:poj1061
同余方程,记得取最小解
2.6 中国剩余定理
解方程x ≡ai (mod pi),其中pi两两互质。
记qij表示pi在模pj意义下的逆元。
x ≡ Σ(ai*Σ(pj*qji)) (mod p1p2…pn)。
例2.2 Biorhythms
题目来源:poj1006
典型的中国剩余定理
3.积性函数
3.1 积性函数如果对于任意正整数a,b,都有f(a)*f(b)=f(ab),则称f为完全积性函数。
如果对于任意满足gcd(a,b)=1的正整数a,b,都有f(a)*f(b)=f(ab),则称f为积性函数。
3.2 求欧拉函数
线性筛法即可
例3.1 Visible Lattice Points
题目来源:poj3090
模板题
4.一些水题
4.1 教堂有一个n*m的点阵,每个点可以走到8个方向上的点。
水平或垂直方向上相邻的点之间的距离为1。
你需要从某个点出发,遍历所有的点并回到起点。
问最短路程。 n,m<=10000。
诡异的一题,分类讨论奇偶性
4.2 sumdiv
题目来源:poj1845
分解质因数+等比数列通项公式
4.3 奶牛分厩
题目来源:洛谷1154
很巧妙的做法
a%k==b%k等价于k|(a-b)
然后给所有的xi-xj打标记
之后用类似埃氏筛法的思想从大到小依次筛
从大到小枚举i,如果i的倍数中存在一个数是因数,那么i也是因数。
4.4 数列
题目来源:洛谷1062
二进制判断大小,k进制输出答案即可
4.5 Hankson的趣味题
筛到45000左右,依次判断每个质数即可
4.6 GCD SUM
考虑枚举k,求出gcd恰好为k的数对个数。
不难发现gcd是k的倍数的数对个数是[n/k]2。
把gcd是2k,3k,4k,….的个数扣掉就好啦。
4.7 数三角形
组合数+gcd
相关文章推荐
- 浴谷夏令营2017.8.1基础数学知识的整理
- 浴谷夏令营2017.8.3数据结构的整理
- 夏令营讲课内容整理Day 0.
- 数论模板整理
- 夏令营讲课内容整理 Day 6 Part 2.
- 数论之 素因子分解,素数筛选法,欧拉函数和扩展欧几里得算法 (整理)
- 浴谷夏令营例题Codeforces827DBest Edge Weight(三个愿望,一次满足~(大雾
- 数论题目整理
- 数论知识整理
- 夏令营讲课内容整理Day 1.
- hdu 5976 Detachment(逆元+贪心+数论+前缀和+二分 待整理)
- OI 数论整理
- 数论中的一些公式【整理】
- 数论整理
- [数论]素数相关整理
- 关于数论的整理
- 夏令营讲课内容整理 Day 6 Part 3.
- 数论--欧拉函数的整理(悔惜晟)
- 模板整理:数论---组合数/欧几里得/孙子定理/费马小定理/欧拉定理及相关
- 夏令营讲课内容整理 Day 4.