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=-a
x
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(数论)的更多相关文章

  1. 清北学堂—2020.1提高储备营—Day 4 afternoon(动态规划初步(一))

    qbxt Day 4 afternoon --2020.1.20 济南 主讲:顾霆枫 目录一览 1.动态规划初步 2.记忆化搜索 3.递推式动态规划 4.记忆话搜索与递推式动态规划的转化 5.状态转移 ...

  2. 清北学堂—2020.1提高储备营—Day 3(图论初步(二))

    qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(kruskal算法,最短路径算法,拓扑排序) 总知识点:图论 一.kruskal算法 1.目的:求图的最小生成树 2 ...

  3. 清北学堂—2020.1提高储备营—Day 3(图论初步(一))

    qbxt Day 3 --2020.1.19 济南 主讲:李奥 目录一览 1.图论(图.图的存储方式.最小生成树的定义) 总知识点:图论 前言:众所周知,图论是一个非常重要的部分,而这次集训也可以算从 ...

  4. 清北学堂—2020.1提高储备营—Day 2 afternoon(线段树、树状数组)

    qbxt Day 2 afternoon --2020.1.18 济南 主讲:李佳实 目录一览 1.线段树 2.二叉搜索树(略过) 3.树状数组 总知识点:基础数据结构(本人初学感觉好难) 一.线段树 ...

  5. 清北学堂—2020.1提高储备营—Day 1 morning(模拟、枚举、搜索)

    qbxt Day 1 morning --2020.1.17 济南 主讲:李佳实 目录一览 1.模拟和枚举 2.基础搜索算法(DFS.BFS.记忆化搜索)以及进阶搜索算法(纯靠自学) 总知识点:基础算 ...

  6. 清北学堂—2020.1提高储备营—Day 2 morning(并查集、堆)

    qbxt Day 2 morning --2020.1.18 济南 主讲:李佳实 目录一览 1.并查集 2.堆 总知识点:基础数据结构 一.并查集 1.描述:并查集是一类十分常用的数据类型,它有着十分 ...

  7. 清北学堂—2020.1提高储备营—Day 1 afternoon(二分、分治、贪心)

    qbxt Day 1 afternoon --2020.1.17 济南 主讲:李佳实 目录一览 1.二分法 2.分治 3.贪心 总知识点:基础算法 一.二分法 (1)算法分析:二分法是一种暴力枚举的优 ...

  8. 清北学堂—2020.3NOIP数学精讲营—Day 1 morning 重点笔记

    qbxt Day 1 morning 重点笔记 --2020.3.8 济南 主讲:钟皓曦 1 正数%负数==正数 负数%正数==负数 负数%负数==负数 a%b的答案的符号取决于a的符号. 2 快速幂 ...

  9. 清北学堂 2020 国庆J2考前综合强化 Day7

    目录 1. 题目 T1 魔力石 题目描述 Sol T2 和 题目描述 Sol T3 数对 题目描述 Sol T4 海豹王国 题目描述 Sol 考场策略 1. 题目 T1 魔力石 题目描述 题目描述 小 ...

随机推荐

  1. mysql创建流水号

    mysql数据库创建流水号 CREATE TRIGGER saledetail_id BEFORE INSERT ON saledetail FOR EACH ROW BEGIN declare n ...

  2. windows丢失文件的恢复技巧

    这几天在使用STVD调试程序的时候,突然跳出来一个“共享冲突”错误,当时并没有在意,点确定后赶紧CTRL+S,然后就一直死在那里了... 结束任务,重启STVD,提示找不到main.c,到此也不以为然 ...

  3. [GPU高性能编程CUDA实战].(桑德斯).聂雪军等.扫描版-百度云分享

    链接:https://pan.baidu.com/s/1NkkDiyRgmfmhm9d2g_GBKQ 提取码:3usj

  4. JSP&Servlet学习笔记----第5章

    Servlet进阶API 每个Servlet都必须由web容器读取Servlet设置信息(标注或者web.xml).初始化. 对于每个Servlet的设置信息,web容器会为其生成一个ServletC ...

  5. List<E> 、Set<E>和Map<K,E>的简单应用

    题目一: 创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集. 代码: List_Test.ja ...

  6. JCL、SLF4J、Log4J、Log4J2、LogBack和JUL之间的关系,你搞清楚了吗?

    写在前面 日志组件是我们平时开发过程中必然会用到的组件.在系统中正确的打印日志至少有下面的这些好处: 调试:在程序的开发过程中,必然需要我们不断的调试以达到程序能正确执行的状态 .记录日志可以让开发人 ...

  7. num11---桥接模式

    比如手机类,有各种类型,比如翻盖.平板等,每一类下又有各个品牌,比如华为,如果新增一个类型,比如折叠屏,或者新增一个手机品牌,苹果,那么会导致 扩展性问题. 这种情况下,应该使用桥接模式. 代码: 创 ...

  8. Github 小白简单教学

    Git和Github简单教程   原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在 ...

  9. [软件分享]Office Tool Plus,一个OFFICE 管理、下载、安装器

    转载自我的博客:https://blog.ljyngup.com 教程摘自官方教程. 出事与本人无关 官网:https://otp.landian.vip/zh-cn/ Office Tool Plu ...

  10. 非对称加密 秘钥登录 https

    非对称加密简介: 对称加密算法在加密和解密时使用的是同一个秘钥:而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)私有密钥(private key,简 ...