清北学堂—2020.1提高储备营—Day 4 morning(数论)
qbxt Day 4 morning
——2020.1.20 济南 主讲:李奥
目录一览
1.一些符号与基本知识
2.拓展欧几里得,逆元与欧拉定理
3.线性筛法与积性函数(非重点)
总知识点:数论
一、一些符号和基本知识
1.数论常用符号
(1).(x,y):x与y的最大公因数,即gcd(x,y)
(2).[x,y]:x与y的最小公倍数,即lcm(x,y)
(3).x≡y(mod n):x与y在模n意义下同余
(4).Def:定义(define)
(5).Thm:定理(theorem)
(6). ⇔:等价(充分必要条件)
(7).a|b:表示a整除b,即b是a的倍数,a是b的因子
2.基本知识
(1)快速幂
计算a^k mod n
时间复杂度O(log(k))
inline long long power(long long a, long long k){
int ans=1;
while(k){
if(k&1)ans=ans*a%n;
k>>=1;
a=a*a%n;
}
return ans;
}
(2)辗转相除法(欧几里得算法):计算x,y的最小公倍数
时间复杂度O(log(max(x,y)))
inline int gcd(int x,int y){
if(y==0)return x;
return gcd(y,x%y);
}
二、拓展欧几里得算法
1.内容:一定存在整数a,b,使得ax+by=(x,y)
2.证明过程:
gcd(x,y)->gcd(y,x%y)
gcd(x,y)->gcd(y,x-⌊x/y⌋y)
如果已知a’y+b’(x- ⌊x/y⌋ y)=(x,y)
整理得b’x+(a’-b’⌊x/y⌋)y=(x,y)
最底层:x’=(x,y),y’=0
显然有1x’+0y’=(x,y)
于是可以递归求出a,b
3.代码:
inline int exgcd(int x,int y,int &a,int &b){
if(y==0){
a=1;
b=0;
return x;
}
int aa,bb,ans;
ans=exgcd(y,x%y,aa,bb);
a=bb;b=aa-bb*(x/y);
return ans;
}
三、逆元
1.Def: 如果xy≡1(mod n),则在模n意义下,y为x的逆元,记为x-1
如果逆元存在,逆元有什么用?
x在模n意义下逆元是否存在?
∃y∈Z, xy≡1(mod n) ⇔ ∃ y, ∃y∈Z ,k∈Z xy+kn=1 ⇔ (x,n)=1
Thm:x在模n意义有逆元当且仅当(x,n)=1
2.计算方法:直接使用exgcd
其它计算方法:
线性求逆元
设n是一个质数,那么1到n-1都与n互质,因此1到n-1在模n意义下都有逆元(1的逆元为1)
对x(1<x<n)求逆元
设a=⌊n/x⌋,b=n%x
n=ax+b
b=-ax
b-1b=-b-1a x
1≡-b-1ax(mod n)
-b-1*a即为x的逆元
x的逆元可以用比他小的数的逆元得到
递推可以求得1到n-1在模n意义下的逆元
代码:
inv[1]=1;
for(i=2;i<=n-1;i++)
inv[i]=(n-inv[n%i]*(n/i)%n)%n;
四、欧拉定理
(1)欧拉函数φ
Def : φ(i)表示1到i中有多少个数与i互质(i∈N+)
对于质数p
φ(p)=p-1
φ(pk)=(p-1)*pk-1
(2)定理内容
若a与n互质,则aφ(n) ≡1(mod n)
推论:若a与n互质,x≡y(mod φ(n)),则ax≡ay(mod n)
aφ(n)≡1(mod n)
a*aφ(n)-1≡1(mod n)
aφ(n)-1 即为a在模n意义下的逆元
当n为质数时,a的逆元为an-2
五.积性函数
(1)Def:对于一个定义域为N+或是1到n的函数f(x),如果满足以下两条性质,称其为积性函数
1.f(1)=1
2.∀a,b∈N+ ,若(a,b)=1,则f(a)f(b)=f(ab)
Def:对于一个定义域为N+或是1到n的函数f(x),如果满足以下两条性质,称其为完全积性函数
1.f(1)=1
2.∀a,b∈N+ , 则f(a)f(b)=f(ab)
(2)常见的积性函数举例
Id:单位函数,Id(x)=x
Idk:幂函数,Idk (x)=xk
φ:欧拉函数
μ:莫比乌斯函数
∊:单元函数 ∊(1)=1, ∊(x)=0(∀x≥2)
1:1(x)=1 (∀x≥1)
d:d(x)表示x的约数个数
(3)
线性筛积性函数
对于积性函数f
在较小时间复杂度内算出f(pk)
对于含有多个质因子的数x,记录x除尽MinP[x]因子后的值,记为w[x]
代码:
f[1]=1;
for(i=2;i<=n;i++){
int j=i/MinP[i];
if(MinP[j]==MinP[i]) w[i]=w[j];
else w[i]=j;
if(w[i]==1){
//i为pk,直接计算
}
else f[i]=f[w[i]]*f[i/w[i]];
}
--------------------------------------------------THE END-------------------------------------------------
清北学堂—2020.1提高储备营—Day 4 morning(数论)的更多相关文章
- 清北学堂—2020.1提高储备营—Day 4 afternoon(动态规划初步(一))
qbxt Day 4 afternoon --2020.1.20 济南 主讲:顾霆枫 目录一览 1.动态规划初步 2.记忆化搜索 3.递推式动态规划 4.记忆话搜索与递推式动态规划的转化 5.状态转移 ...
- 清北学堂—2020.1提高储备营—Day 3(图论初步(二))
qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(kruskal算法,最短路径算法,拓扑排序) 总知识点:图论 一.kruskal算法 1.目的:求图的最小生成树 2 ...
- 清北学堂—2020.1提高储备营—Day 3(图论初步(一))
qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(图.图的存储方式.最小生成树的定义) 总知识点:图论 前言:众所周知,图论是一个非常重要的部分,而这次集训也可以算从 ...
- 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)
qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...
- 清北学堂—2020.1提高储备营—Day 1 morning(模拟、枚举、搜索)
qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算 ...
- 清北学堂—2020.1提高储备营—Day 2 morning(并查集、堆)
qbxt Day 2 morning --2020.1.18 济南 主讲:李佳实 目录一览 1.并查集 2.堆 总知识点:基础数据结构 一.并查集 1.描述:并查集是一类十分常用的数据类型,它有着十分 ...
- 清北学堂—2020.1提高储备营—Day 1 afternoon(二分、分治、贪心)
qbxt Day 1 afternoon --2020.1.17 济南 主讲:李佳实 目录一览 1.二分法 2.分治 3.贪心 总知识点:基础算法 一.二分法 (1)算法分析:二分法是一种暴力枚举的优 ...
- 清北学堂—2020.3NOIP数学精讲营—Day 1 morning 重点笔记
qbxt Day 1 morning 重点笔记 --2020.3.8 济南 主讲:钟皓曦 1 正数%负数==正数 负数%正数==负数 负数%负数==负数 a%b的答案的符号取决于a的符号. 2 快速幂 ...
- 清北学堂 2020 国庆J2考前综合强化 Day7
目录 1. 题目 T1 魔力石 题目描述 Sol T2 和 题目描述 Sol T3 数对 题目描述 Sol T4 海豹王国 题目描述 Sol 考场策略 1. 题目 T1 魔力石 题目描述 题目描述 小 ...
随机推荐
- mysql创建流水号
mysql数据库创建流水号 CREATE TRIGGER saledetail_id BEFORE INSERT ON saledetail FOR EACH ROW BEGIN declare n ...
- windows丢失文件的恢复技巧
这几天在使用STVD调试程序的时候,突然跳出来一个“共享冲突”错误,当时并没有在意,点确定后赶紧CTRL+S,然后就一直死在那里了... 结束任务,重启STVD,提示找不到main.c,到此也不以为然 ...
- [GPU高性能编程CUDA实战].(桑德斯).聂雪军等.扫描版-百度云分享
链接:https://pan.baidu.com/s/1NkkDiyRgmfmhm9d2g_GBKQ 提取码:3usj
- JSP&Servlet学习笔记----第5章
Servlet进阶API 每个Servlet都必须由web容器读取Servlet设置信息(标注或者web.xml).初始化. 对于每个Servlet的设置信息,web容器会为其生成一个ServletC ...
- List<E> 、Set<E>和Map<K,E>的简单应用
题目一: 创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集. 代码: List_Test.ja ...
- JCL、SLF4J、Log4J、Log4J2、LogBack和JUL之间的关系,你搞清楚了吗?
写在前面 日志组件是我们平时开发过程中必然会用到的组件.在系统中正确的打印日志至少有下面的这些好处: 调试:在程序的开发过程中,必然需要我们不断的调试以达到程序能正确执行的状态 .记录日志可以让开发人 ...
- num11---桥接模式
比如手机类,有各种类型,比如翻盖.平板等,每一类下又有各个品牌,比如华为,如果新增一个类型,比如折叠屏,或者新增一个手机品牌,苹果,那么会导致 扩展性问题. 这种情况下,应该使用桥接模式. 代码: 创 ...
- Github 小白简单教学
Git和Github简单教程 原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在 ...
- [软件分享]Office Tool Plus,一个OFFICE 管理、下载、安装器
转载自我的博客:https://blog.ljyngup.com 教程摘自官方教程. 出事与本人无关 官网:https://otp.landian.vip/zh-cn/ Office Tool Plu ...
- 非对称加密 秘钥登录 https
非对称加密简介: 对称加密算法在加密和解密时使用的是同一个秘钥:而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)私有密钥(private key,简 ...