·最大公约数 gcd

辗转相除法  gcd(a,b)=gcd(b,a%b)

 int gcd(int x,int y){
if(y==) return x;
return gcd(y,x%y);
}

效率O(logn)

·最小公倍数 lcm

可由最大公约数推来 lcm(a,b)=a*b/gcd(a,b)

 int lcm(int x,int y){
int p=gcd(x,y);
return a*b/p;
}

效率O(logn)

·扩展欧几里得 extgcd

求ax+by=gcd(a,b)的整数对(x,y)

也可由gcd推过来

推导过程:

ax+by=gcd(a,b)=gcd(b,a%b)

假设求出 bx'+(a%b)y'=gcd(b,a%b)

那么整理可得 bx'+(a-(a/b)*b)y'=gcd(b,a%b)

ay'+b(x'-(a/b)*y')=gcd(b,a%b)=gcd(a,b)

故 x=y'  y=x'-(a/b)*y'

 int extgcd(int a,int b,int &x,int &y){ //返回值为gcd(a,b)
if(b==) {
x=;y=;
return a;
}
int d=extgcd(b,a%b,y,x);
y-=(a/b)*x;
return d;
}

可用于求同余方程、逆元

效率O(logn)

·素数筛

线性筛法,很好理解

由于每个合数都只会被筛掉一次,复杂度O(n)

 void Get_Prime(int n){
p[]=p[]=;
cnt=;
for(int i=;i<=n;i++) p[i]=; //先标记2~n都为素数
for(int i=;i<=n;i++){
if(p[i]) prime[++cnt]=i; //i为素数
for(int j=;j<=cnt && (long long)i*prime[j]<=n;j++){
p[i*prime[j]]=; //每个合数都只被自己最小质因子筛掉
if(i%prime[j]==) break;
}
}
}

·欧拉函数 phi

求小于n与n互素的数的个数

phi[i]=i*(1-1/p1)*(1-1/p2)*(1-1/p3)……  其中p1,p2,p3为i的质因数

可以在线性筛素数的同时求,复杂度O(n)

 void get_phi(){
p[]=p[]=;cnt=;
for(int i=;i<=n;i++) p[i]=;
for(int i=;i<=n;i++){
if(p[i]==) phi[i]=i-,prime[++cnt]=i;
for(int j=;j<=cnt && (ll)i*prime[j]<=n;j++){
p[i*prime[j]]=;
if(i%prime[j]==) {
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-);
}
}
}

·快速幂

可以把幂想成一个二进制数来理解

 int Power_Mod(int x,int y){  //求x的y次方
int ret=;
while(y){
if(y&) ret*=x;
x=x*x;
y>>=;
}
return ret;
}

效率O(logn)

·排列组合

1)加法原理:做一件事有n类做法,第n类有m[n]种做法,总做法数为m[1]+m[2]+...+m[n]

2)乘法原理:做一件事有n个步骤,第n个步骤有m[n]中做法,总做法数为m[1]*m[2]*...*m[n]

乘法原理可以说是加法原理的特殊情况

3)容斥原理   **这很重要**

例如:求gcd(1~m,1~n)=k的数对有多少

设满足条件的数对有f(k)个

则f(k)=(m/k)*(n/k)-f(2*k)-f(3*k)-f(4*k)-……从后往前递推计算即可

4)排列:A(m,n)=m!/(m-n)!  (m>n)

5)组合:C(m,n)=m!/((m-n)!*n!)  (m>n)

如何求组合数?

法一:C(m,n)=C(m,n-1)*(m-n+1)/n

法二:杨辉三角  C(m,n)=C(m-1,n)+C(m-1,n-1)

·概率与数学期望

1)概率:P(A)=m/n  (可理解为事件A发生的频率)

互相独立的事件A与B 满足 P(A*B)=P(A)*P(B)

2)数学期望:随机变量X的数学期望EX是所有可能的值按照概率加权的和

期望的线性性质:E(X+Y)=E(X)+E(Y)

未完待续……

noip2017考前基础复习——数论数学的更多相关文章

  1. C语言基础复习总结

    C语言基础复习总结 大一学的C++,不过后来一直没用,大多还给老师了,最近看传智李明杰老师的ios课程的C语言入门部分,用了一周,每晚上看大概两小时左右,效果真是顶一学期的课,也许是因为有开发经验吧, ...

  2. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

  3. 《CSS权威指南》基础复习+查漏补缺

    前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...

  4. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  5. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  6. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  7. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  8. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  9. JS基础 复习: Javascript的书写位置

    爱创课堂JS基础 复习: Javascript的书写位置复习 js书写位置:body标签的最底部.实际工作中使用书写在head标签内一对script标签里.alert()弹出框.console.log ...

随机推荐

  1. H3C 端口隔离简介

  2. 20191029校内ACM部分题解

    20191029校内ACM部分题解 https://codeforces.com/group/32W4q7bPme/contest/257710 B数学 给定一个在\([0,1]\)等概率随机区间的随 ...

  3. json文件生成

    // import Translate from 'translate-components' /* * 匹配所有汉字RegExp: [\u4e00-\u9fa5] [\u4E00-\u9FA5]|[ ...

  4. CP防火墙导入.csv格式的对象

    Step1:将.csv格式的对象上传到管理服务器,本例为/home/admin目录 [Expert@SZ-OFFICE-SMT:0]# pwd/home/admin[Expert@SZ-OFFICE- ...

  5. HDU 1969 Pie [二分]

    1.题意:一项分圆饼的任务,一堆圆饼共有N个,半径不同,厚度一样,要分给F+1个人.要求每个人分的一样多,圆饼允许切但是不允许拼接,也就是每个人拿到的最多是一个完整饼,或者一个被切掉一部分的饼,要求你 ...

  6. kubernetes实战(三十):CentOS 8 二进制 高可用 安装 k8s 1.17.x

    1. 基本说明 本文章将演示CentOS 8二进制方式安装高可用k8s 1.17.x,相对于其他版本,二进制安装方式并无太大区别. 2. 基本环境配置 主机信息 192.168.1.19 k8s-ma ...

  7. 超简单!pytorch入门教程(四):准备图片数据集

    在训练神经网络之前,我们必须有数据,作为资深伸手党,必须知道以下几个数据提供源: 一.CIFAR-10 CIFAR-10图片样本截图 CIFAR-10是多伦多大学提供的图片数据库,图片分辨率压缩至32 ...

  8. Spring Boot中路径及配置文件读取问题

    编译时src/main/java中*.java文件会被编译成*.class文件,在classpath中创建对应目录及class文件           src/main/resources目录中的文件 ...

  9. 智能反射表面(可重构智能表面)Large Intelligent surface 最新综述整理

    闻道洛阳花正好,家家遮户春风.道人饮处百壶空.年年花下醉,看尽几番红. 此拐又从何处去,飘蓬一任西东.语声虽异笑声同.一轮清夜月,何处不相逢. ---- 临江仙·与刘拐 更多精彩内容请关注微信公众号 ...

  10. 2020年我国到底有多少程序员?现在学习java还来得及吗?

    中国有多少程序员?现在还值得学java吗? 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! JAVA起于1995年,经过20多年的发展,JAVA如今已经发展成为 ...