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. Web自动化测试项目搭建(一) 需求与设计

    一.项目需求 测试/生产环境更新后,自动化回归测试 项目易于维护和运行 支持多种测试策略 支持可视化测试报告 运行结果,支持多种方式通知相关人员 可定时/触发的方式运行自动化测试用例 二.设计 2.1 ...

  2. Realm及相关对象(四)

    Shiro Realm 1.UserRealm 父类 AuthorizingRealm 将获取 Subject 相关信息分成两步:获取身份验证信息(doGetAuthenticationInfo)及授 ...

  3. LeetCode 380. Insert Delete GetRandom O(1) 常数时间插入、删除和获取随机元素(C++/Java)

    题目: Design a data structure that supports all following operations in averageO(1) time. insert(val): ...

  4. 源码级别gdb远程调试(实现OS简单内核)

    最近在学着编写一个操作系统的简单内核,需要debug工具,我们这里使用gdb来进行调试,由于虚拟机运行和本机是两个部分,所以使用 gdb 的远程调试技术,这里对 gdb 常见调试以及远程调试方式做一个 ...

  5. Flutter开发之Widget布局和页面导航

    一.水平布局Row Row控件可以分为非灵活排列和灵活排列两种,灵活的可以在外边加入Expanded使用 两者混用: import 'package:flutter/material.dart'; v ...

  6. 微信小程序中的图表构建

    第一 html中的代码 <view class="container"> <canvas canvas-id="lineCanvas" bin ...

  7. 自动化运维利器 Fabric

    Fabric 主要用在应用部署与系统管理等任务的自动化,简单轻量级,提供有丰富的 SSH 扩展接口.在 Fabric 1.x 版本中,它混杂了本地及远程两类功能:但自 Fabric 2.x 版本起,它 ...

  8. zabbix 自定义监控项报警给单独的人

    需求就是某个交换机的流量达到某个值后需要报警,但报警的内容不是发给所有的人,而是只发给特定的一个人,而其他的报警信息不能让他收到,他只能收到这一个报警项的报警 1:创建好用户定义好手机号 2:新增加一 ...

  9. OSPF理论

    OSPF简介 OSPF(Open Shortest Path First 开放式最短路径优先)协议是IETF为IP网络开发的IGP路由选择协议.它是一种典型的链路状态(link-state)路由协议. ...

  10. 让div充满整个body

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...