一、取模运算

(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. 真的了解CDN服务吗?

    Im CDN,WOW,COOL CDN知识详解 全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络,CDN是构建在网络之上的 ...

  2. Wormholes(spfa判负环)

      POJ - 3259—— Wormholes Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & % ...

  3. hadoop 学习(二)

    我们很荣幸能够见证Hadoop十年从无到有,再到称王.感动于技术的日新月异时,希望通过这篇内容深入解读Hadoop的昨天.今天和明天,憧憬下一个十年. 本文分为技术篇.产业篇.应用篇.展望篇四部分 技 ...

  4. C#使用PrintDocument打印 多页 打印预览

    PrintDocument实例所有的订阅事件如下: 创建一个PrintDocument的实例.如下: System.Drawing.Printing.PrintDocument docToPrint ...

  5. Tips/Tricks in Deep Neural Networks

    转自: http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html

  6. ivy在eclipse中的重新加载

    ivy在eclipse中的重新加载 如果由于网速的原因,导致了ivy没有正常的加载,可以进行ivy的重新加载: 1,右键点击项目,选择属性->Java Build Path->Librat ...

  7. vim列块操作

    一.可视模式 进入可视模式有三种方法:v,V,CTRL+V (1)按v启用可视模式,能够按单个字符选择内容,移动光标能够选择. 如: (2)按V启用可视模式,立马选中光标所在行.按单行符选择内容.移动 ...

  8. [Javascript] Convert a Callback-Based JavaScript Function to a Promise-Based One

    Sometimes, you might want to convert a JavaScript function that accepts a callback to one that retur ...

  9. Java类载入器(二)——自己定义类载入器

      用户定制自己的ClassLoader能够实现以下的一些应用: 自己定义路径下查找自己定义的class类文件,或许我们须要的class文件并不总是在已经设置好的Classpath以下,那么我们必须想 ...

  10. Multi-company rules

    Object Name Domain 说明 Point of Sale Point Of Sale Order [('company_id', '=', user.company_id.id)] 指派 ...