您的位置:首页 > 其它

浴谷夏令营2017.8.1数论的整理

2017-10-24 21:05 204 查看
知识点:

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