一、取模运算

(1)定义

给定一个正整数p和一个整数n 一定存在此等式 n=k*p+r;其中k,r是整数,r大于等于0小于p

称k是n除以p的商,r为n除以p的余数

说明:同余式 正整数a,b对p取模,它们的余数相同 记作 a≡b (mod p)

整数分为p个等价类,称为模p的剩余类

n%p所得结果的正负由n决定,与p无关。如:7%4=3,-7%4=-3,-7%-4=-3;

(2)基本性质

若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7)

传递性:a≡b (% p),b≡c (% p),则a≡c (% p)

对称性:a≡b (% p)等价于b≡a (% p)

(3)运算规则

(a+b)%p=(a%p+b%p)%p

(a-b)  %p=(a%p-b%p+p)%p //一定+p

(a*b)%p=(a%p*b%p)%p //可能会爆long long 快速乘

结合律:((a+b)%p+c)%p=(a+(b+c)%p)%p

交换律:((a+b)%p*c)=(a*c%p+b*c%p)%p

(4)重要定理:

如果a≡b (% p),则

(a+c)≡(b+c) (% p),(a*c)≡(b*c) (% p)//c是任意的

若a≡b (% p),c≡d (% p),则a+c≡b+d (% p),a-c≡b-d (% p),a*c≡b*d (% p),a/c≡b/d(% p)

(5)代码实现

//同余方程求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解
#include<iostream>
#include<cstdio>
using namespace std;
int a,b,x,y;
int gcd(int a,int b,int &x,int &y)
{
if(!b){
x=;
y=;
return a;
}
int ans=gcd(b,a%b,y,x);
y-=(a/b)*x;
return ans;
}
int main()
{
scanf("%d%d",&a,&b);
gcd(a,b,x,y);
while(x<=)x+=b;
printf("%d\n",x);
return ;
}

二、乘法逆元

(a/b)%p=???

为了方便讨论,我们只讨论正整数群上的乘法逆元。

(1)定义:

若存在正整数a,b,p,满足a*b≡1(% p),则称a是b的乘法逆元或者称b是a的乘法逆元。

在mod 7意义下,3的乘法逆元是5,在mod 6意义下2的乘法逆元是多少呢??

在mod 6意义下不存在2的乘法逆元

(2)乘法逆元存在性定理

对于ab≡1(% p),如果a与p互质,则一定存在一个正整数b满足b<p,否则不存在。

证明:对于上述同余方程,可得,ab-pk=1。对于ax+by=z,只有当z是gcd(a,b)的倍数时才有解。

所以gcd(a,p)=1,所以a,p互质时才存在b

(3)求乘法逆元

欧拉定理 费马小定理 扩展欧几里得 线性求逆元

三、欧拉函数

(1)定义

欧拉函数φ(n)表示小于等于n且与n互质的正整数的个数

特别的φ(1)=1。欧拉函数是积性函数

(2)欧拉函数公式

令n=Π(i=1-k)pi的ci次方为n的质因子分解式,则有

φ(n)=n*Π(i=1--k)(pi-1)/pi

(3)性质

a、若p为质数,则φ(p)=p-1

证明:代公式。

b、若p为质数,则φ(p^k)=(p-1)*(p^(k-1))

证明:若p是质数,在p^k内只有p的倍数不与p^k互质,p的倍数有p^k/p=p^(k-1)次方个。

则,φ(p^k)=p^k-p^(k-1)=(p-1)*p^(k-1)

c、欧拉函数是积性函数,若n,m互质,则φ(nm)=φ(n)φ(m)

d、当n是奇数时,φ(2n)=φ(2)*φ(n)=φ(n),因为此时2与n互质,满足c性质

e、若n>2,则φ(n)为偶数

证明:

①当n是质数时,φ(n)=n-1,因为n是大于2的质数,所以n一定是奇数,n-1一定是偶数

②当n是合数时,

f、当n>1时,1--n与n互质的数的和为 n*φ(n)/2

(4)欧拉定理

a^(φ(p))≡1(mod p) 对任意互质的a,p都成立

a*a^(φ(p)-1)≡1(mod p) ,然后用快速幂求乘法逆元

四、费马小定理

对于任意互质的a,p(p为质数恒成立)

a^(p-1)≡1(mod p)

费马小定理是欧拉定理在p为质数时的推论,用于降低题目难度,竞赛中常见的质数998244353,1000000009

五、欧几里得算法及扩展

(1)欧几里得算法

gcd(a,b)=gcd(b,a%b).O(logn)求两个数的最大公约数

(2)扩展欧几里得算法

扩展欧几里得用于求形如 ax+by=gcd(a,b)的一组解,保证求出的解|x|+|y|最小。

求解过程:

由ax+by=gcd(a,b)得出另一个式子,bx'+a%by'=gcd(b,a%b),

由于gcd(a,b)=gcd(b,a%b),

所以ax+by=bx'+a%by'

ax+by=bx'+(a-a/b*b)y'

ax+by=bx'+ay'-a/b*by'

ax+by=b(x'-a/by')+ay'

所以 x=y',y=x'-a/by'。
所以这个方程的x,y可以由我们构造的方程求出,这样递归下去求解。

递归边界,b=0时,此时,ax+0*y=a。所以到边界时a=1,b为任意值。(代码上b=0的,试了一下任何值都可以)

代码实现:

void exgcd(int a,int b,int &x,int &y){
if(b==){
x=;y=;
return;
}
ecgcd(b,a%b,x,y);
int t=x;x=y;y=t-a/b*y;
}

(3)扩展欧几里得求逆元

由ab≡1(% p)

则ab-k*p=1,若gcd(a,p)=1则存在b为a的逆元。

复杂度O(logn)

六、线性筛素数

(1)引入

在之前的埃拉托色尼筛素数的方法中,16这个数被2,4,8筛掉,发现一个数被多个数筛掉很不划算。

那么怎样让一个数被只被一个数筛去呢?我们可以保证每个数只被它最小的质因子筛掉。时间复杂度O(n)

(2)理解

首先推荐一篇论文,很好理解。我就不赘述。

(3)代码实现

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,cnt,check[],prime[];
void Prime(int n)
{
check[]=;
for(int i=;i<=n;i++)
{
if(!check[i])
prime[++cnt]=i;
for(int j=;j<=cnt&&i*prime[j]<=n;j++)
{
check[i*prime[j]]=;
if(i%prime[j]==)break;
}
}
}
int main()
{
scanf("%d%d",&n,&m);
Prime(n);
for(int i=;i<=m;i++)
{
scanf("%d",&x);
if(!check[x])printf("Yes\n");
else printf("No\n");
}
return ;
}

七、数论函数

(1)定义

a、定义域为正整数,陪域为复数的函数称为数论函数。(对于陪域和复数的概念我不理解)

b、积性函数 对于所有互质的正整数a,b满足f(a*b)=f(a)*f(b),完全积性函数是对于所有的正整数a,b都满足上式。

(2)常见的数论函数

1、对于任意正整数x,函数值均为1

e、对于正整数x,若x=1,函数值为1,否则为0

n、对于任意正整数x函数值均为x

以上为完全积性函数。

d:对于任意正整数x,函数值为它的正因子个数

φ:对于正整数x,函数值为小于等于它且与它互质的正整数的个数

μ:对于正整数x,设正整数x的质因子分解为 x=累乘i=1--k ai^pi,若存在pi≥2则函数值

为0,否则为(-1)^k,特殊的μ(1)=1

以上为积性函数。

八、莫比乌斯反演(没补全)

(1)引入

设,有F(n)=sigma[f(d)],d|n。

例如:

F(1)=f(1)

F(2)=f(1)+f(2)

F(3)=f(1)+f(3)

F(4)=f(1)+f(2)+f(4)

F(5)=f(1)+f(5)

F(6)=f(1)+f(2)+f(3)+f(6)

F(7)=f(1)+f(7)

F(8)=f(1)+f(2)+f(4)+f(8)

可求得:

f(1)=F(1)

f(2)=F(2)-F(1)

f(3)=F(3)-F(1)

f(4)=F(4)-F(2)

f(5)=F(5)-F(1)

f(6)=F(6)-F(3)-F(2)+F(1)

f(7)=F(7)-F(1)

f(8)=F(8)-F(4)

发现了什么??

F(n)=sigma[f(d)]   =》f(n)=sigma[u(d)*F(n/d)], d|n

其中μ(d)为莫比乌斯函数,给出的定义如下。

当d=1时,μ(d)=1

当d=p1*p2*p3...*pr时,μ(d)=(-1)^r,其中pi是互不相同的素数

其他情况μ(d)=0

(2)莫比乌斯函数的性质

①莫比乌斯函数是积性函数,积性函数的性质,a、f(1)=1,b、积性函数的前缀和也是积性函数。

九、BSGS

求解形如 x ^y ≡ z(mod p) 中 y 的取值的算法.

设y=km+i则原同余式为x^km+i ≡ z(mod p)=》x^i≡z*x^(-km)

Baby Step:x^i可以预处理扔进一个map

Gaint Step: 枚举k,查找是否存在z*x^(-km)

十、杨辉三角

(1)引入

杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。杨辉三角形同时对应于二项式定理的系数。

(2)杨辉三角

(3)性质

a、每个数等于它上方两数之和

b、每行数字左右对称,由1开始逐渐变大

c、第n行的数字有n项

d、第n行的数字和为2^(n-1)

e、第n行的m个数可表示为C(n-1,m-1),即从n-1个不同元素中取出m-1个元素的组合数

补充:

f、第n行的第m个数与第n-m+1个数相等

g、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)

....

(4)应用

十一、质因数分解定理

(1)任何一个大于1的自然数n,如果n不为质数,那么n可以被唯一分解为有限个质数的乘积的形式,

N=P1a1P2a2P3a3......Pnan,这里P1<P2<P3......<Pn均为质数,其中指数ai是正整数。这样的分解称为 的标准分解式

(2)一个大于1的正整数N,如果它的标准分解式为:  ,那么它的正因数个数为

  。
 
 
(3) 它的全体正因数之和
 
, 并证明

 


有待更新//...

noip数学的更多相关文章

  1. Noip数学整理

    目录 Noip数学整理 序 1 取模相关 2 质数相关 3.基本操作 4.方程相关 5.数列相关 6.函数相关 Noip数学整理 序 因为某些原因, Noip对于数学方面的考纲仅停留在比较小的一部分, ...

  2. NOIp 数学知识点总结

    推荐阅读 NOIp 基础数论知识点总结: https://www.cnblogs.com/greyqz/p/number.html 排列组合 常用公式 排列:\[\displaystyle A_n^m ...

  3. 【模板】【学习笔记】noip数学

    一.素数 欧拉筛 void prime(){ check[]=; ;i<=n;i++){ if(!check[i])prim[++cnt]=i;//这个if语句后面没有大括号!! ;j<= ...

  4. NOIP数学相关模板整理

    $O(n)$递推求逆元 #include<cstdio> #include<cstring> #include<algorithm> using namespace ...

  5. NOIp 数学 (小学奥数)

    Basic knowledge \[ C_n^m=\frac{n!}{m!(n - m)!} \] 快速幂 // Pure Quickpow inline int qpow(int n, int m, ...

  6. NOIp 基础数论知识点总结

    推荐阅读 NOIp 数学知识点总结: https://www.cnblogs.com/greyqz/p/maths.html Basic 常用素数表:https://www.cnblogs.com/g ...

  7. Collections 索引

    About Me NOIp 数据结构专题总结 NOIp 图论算法专题总结 NOIp 基础数论知识点总结 NOIp 数学知识点总结 搜索算法总结 (不包含朴素 DFS, BFS) 位运算 字符串算法总结 ...

  8. NOIP复习之1 数学数论

    noip一轮复习真的要开始啦!!! 大概顺序是这样的 1.数学 2.搜索贪心 3.数据结构 4.图论 5.dp 6.其他 数学 1.数论 数论被称为数学皇冠上的明珠,他的重要性主要在于它是其他学习的祖 ...

  9. 数学相关【真·NOIP】

    数论相关 上来就不会的gcd相关.见SCB他威胁我去掉了一个后缀的blog好了:https://blog.csdn.net/suncongbo/article/details/82935140(已经过 ...

随机推荐

  1. Netty和Akka有什么不同?

    摘要: Akka is a concurrency framework built around the notion of actors and composable futures, Akka w ...

  2. 2017 ACM/ICPC Asia Regional Shenyang Online 记录

    这场比赛全程心态爆炸…… 开场脑子秀逗签到题WA了一发.之后0贡献. 前期状态全无 H题想复杂了,写了好久样例过不去. 然后这题还是队友过的…… 后期心态炸裂,A题后缀数组理解不深,无法特判k = 1 ...

  3. 嵌入式cpu架构

    原文:http://www.kaixin001.com/repaste/11007221_7220618944.html### 内容: 目前主要CPU架构有ARM.X86/Atom.MIPS.Powe ...

  4. MongoDB学习day10--数据库导入导出

    在 Mongodb 中我们使用 mongodump 命令来备份 MongoDB 数据. 该命令可以导出所有数据到指定目录中.mongodump 命令可以通过参数指定导出的数据量级转存的服务器. 使用m ...

  5. 使用uilabel重新自调整高度后显示横线和竖线问题

    这个使用uilabel自调节高度发现的问题,代码如下: //content label                        NSString *contentValue = ((Messag ...

  6. Activiti Model Editor组件

    通过Activiti Modeler架构图可知,Activiti Explorer采用的是Vaadin框架. Vaadin 是一种 Java Web 应用程序的开发框架, 其设计目标是便利地创建和维护 ...

  7. OCP47:155

  8. java开始到熟悉63-65

    本次内容:java常用类 1.包装类 package array; public class wrapperclass { public static void main(String[] args) ...

  9. 远程连接mysql速度慢的解决方法:skip-name-resolve取消DNS的反向解析

    PHP远程连接MYSQL速度慢,有时远程连接到MYSQL用时4-20秒不等,本地连接MYSQL正常,出现这种问题的主要原因是,默认安装的 MYSQL开启了DNS的反向解析,在MY.INI(WINDOW ...

  10. Centos6.5 安装 Oracle11gR2(64位)

    Centos6.5安装 Oracle11gR2(64位) 安装centos6.5 (我的是虚拟机环境) 1.  下载centos6.5的安装包,不解释. 例如以下图: 2.  下载oracle安装包, ...