noip数学基础

.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
noip 基础数学
赵和旭
清华大学
2019 7 17
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
前言
我今天主要介绍的一点数学知识。
希望大家可以在学习的过程中培养一下数学思想,而不是背
过各种定理和公式。
在数学这一块内容,背是最不科学的方法。(别的不一定)
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
一些数学符号
i 求和符号。
i 求积符号。
n! = 1 2 3:::::: n
log2(n) 就是求 2 的多少次方为 n.
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
整数除法的取整
⌊⌋ 向下取整
⌈⌉ 向上取整
c++ 中,正整数的整除都是向下取整 ba
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
取模
a b 取模得到的结果就是 a 除以 b 的余数
记作 a mod b,例如 10 mod 3 = 1
x y(%p) 表示 x y p 取模的结果相等,称为同余
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
取模性质
关于取模的几个基本性质:
x + a y + a(%p)
x - a y - a(%p)
x a y a(%p) (以上假设 x y(%p))
(a + b)%p = (a%p + b%p)%p
(a - b)%p = (a%p - b%p)%p
(a - b)%p = (a - b + p)%p
a b%p = (a%p) (b%p)%p
有了以上性质,我们就可以边计算边取模
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
取模
c++ 中,注意
1:一个正整数对一个正整数取模得到的是一个非负整数。
2:一个负数对一个正整数取模得到的是负数或者是 0
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
带余除法
对于两个正整数 ab,存在两个唯一的整数满足 qr 满足
b = a q + r(0 r < a)
其中 b a 取模得到的是 r,而 b 整除 a q
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
整除
整数 ab,且 a 不等于 0
如果存在整数 k 满足, b = a × k
那么 a 整除 b,我们符号记做 a j b
b 成为 a 的倍数, a 成为 b 的因数。
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
最大公约数
如果 a%x = 0,我们称 x a 的约数 (或因数),也称 a x
倍数
a b 的最大公约数,是指一个最大的整数 x,使得 x 同时是 a
b 的约数
我们将 a b 的最大公约数记作 gcd(a,b)
例如: gcd(18,24)=6
那如何求解最大公约数呢?
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
最大公约数
欧几里得算法又称辗转相除法
算法公式:
gcd(a; b) = {gcd a (b; a%b) b ; b̸= 0 = 0
有了这个公式,我们就可以轻松求解最大公约数了,时间复杂度
log 级别
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
最大公约数
首先为什么是 log 次,时间复杂度证明?
正确性?
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
最大公约数
我们考虑 a b 取模, 只要 a 大于 b,那么 a 至少会减少一半,
并且可能会减少更多。
也就是说每递归两次一个数会减少至少一半,每次除以 2,所以
就是 log 级别的了。
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
最大公约数
关于 gcd 还有以下扩展: gcd(a,b,c)=gcd(gcd(a,b),c)
a b 的最小公倍数记作 lcm(a,b) lcm(a; b) = gcda(ab;b)
gcd 同理, lcm(a,b,c)=lcm(lcm(a,b),c)
但是 lcm(a; b; c) = gcd a(ab;bc;c) 不成立!!!
noip 基础数学 清华大学
.
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
. .
. .
.
.
. .
.
.
. .
. .
.
前言 同余基础 进制转换 高精度 排列组合与计数问题
一个证明
a b 的最小公倍数记作 lcm(a,b) lcm(a; b) = gcda(ab;b)
g=gcd(a,b),g 是最大的能满足存在一组 x y,x*g=a,y*g=b, 我们发现
x*y*g 既可以整除 a 也可以整除 b,首先这个最小公倍数是必须有
x y 两因子的,那就考虑是否存在一个更小的 k
x*y*k 也能整除 a b,答案肯定是不行的,因为想整除 x*g,至少要有一个
g 因子,以此我们就证明完毕了。
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
军训队
给出一个(n+1*m+1) 的网格我站在(0,0)这个位置,每一个学生有一个战斗力是他到
(0,0) 这个连线上有多少个学生。求总战斗力。

n,m<=1000
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
军训队
你要搞出来这个性质。(
xy)到(0,0)能经过 gcd(x,y)+1 个点。然后直接两个 for 循环就出来了。

noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
10 进制转 k 进制
首先我们来看看一个十进制数的本质是什么,我们以 2333 为例,其实它就是
2 103 + 3 102 + 3 101 + 3 100,而对于这同一个数,我们还可以把它表示成

1 211 + 1 28 + 1 24 + 1 23 + 1 22 + 1 20 也就对应着它的二进制表示
100100011101。而对于任意一个 n k 进制下,则为
n = i=0 Ci ki 其中 Ci 是小于 k 的。而对于一个 k 这个 C
数组是唯一的。其实不同进制
k,本质上还是同一个数,只是不同的表示形式而已。

noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
10 进制转 k 进制
那实际上我们就是求出每一个 Ci 即可。我们发现
C0 = 2333%kC
1 = 2333/k%kC
2 = 2333/k/k%k
......... 依次我们就求出来每一位了。
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
k 进制转 10 进制
这就是说我们知道上面的 C0; C1; C2:::: 也就是我们知道每一位,然后我们要求原数。然后我们直接根据

n = i=0 Ci ki 就可求得 n 了。
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
我们来对着代码讲。
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
计数三个原理: 加法原理
具体是指:做一件事情,完成它有 n 类方式,第一类方式有 M1
种方法,第二类方式有 M2 种方法, .......,第 n 类方式有 Mn 种方法,那么完成这件事情共有
M1+M2+.......+Mn 种方法。比如说:从武汉到上海有乘火车、飞机、轮船
3 种交通方式可供选择,而火车、飞机、轮船分别有
k1k2k3 个班次,那么从武汉到上海共有
k1+k2+k3 种方式可以到达。
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
计数三个原理: 乘法原理
做一件事,完成它需要分成 n 个步骤,做第一步有 m1 种不同的方法,做第二步有
m2 种不同的方法, ......,做第 n 步有 mn 种不同的方法。那么完成这件事共有
N=m1×m2×m3×......×mn 种不同的方法。比如说,从北京到济南
3 种方式,从济南到青岛 2
种方式,则从北京到青岛 6 种方式。
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
计数三个原理: 容斥原理
在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。




noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
排列
阶乘: n! = 1 2 :::::: n(规定 0!=1)排列:有
n 个不同的物品,从中选出 m 个排成一列,问形成的排列的方案数。对于第一个位置,我们有
n 种选择;第二个位置,有
(n-1) 种选择..... m 个位置,有 (n-m+1) 种选择。
Answer=n*(n-1)*......*(n-m+1)
我们将其记作: Am n = (n-nm! )!
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
组合
组合:有 n 个不同的物品,从中选出 m 个物品,不考虑顺序性,问方案数。我们考虑
n 个物品选出 m 个的排列,由于在组合中不考虑顺序性,所以每一种组合在排列中重复出现了
m! 次,所以只需要将排列数除以
m!。我们将其记作:
Cm n = (mn) = (n-mn! )!m!
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
三道题目
1、用 1 2 3 4 5 这五个数字,组成没有重复数字的三位数,且为偶数,共有多少个?

22 名老师和 4 名学生排成一排,老师不站在两端,方案数有多少种?

35 名同学排成一排,甲与乙必须相邻的方案数有多少?
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
三道题目
12 A2 4
2A4 4 C2 3 A2 2
3A4 4 A2 2
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
组合数公式
(mn) = (mn --11) + (n m- 1)(
mn) = (n -n m)
ni
=0
(ni) = 2n
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
求组合数
(mn) = (n -n m)
利用这条性质,我们可以在 O(n2) 的时间的递推出所有
0 <= i <= n; 0 <= j <= i Cj i
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
四个经典模型
1:求 n 个互不相同的小球,放在 m 个互不相同的桶中的方案数,桶可以为空。

2:求 n 个相同的小球,放在 m 个互不相同的桶中的方案数,桶不可以为空。

3:求 n 个相同的小球,放在 m 个互不相同的桶中的方案数,桶可以为空。

4:求网格中 (0,0) 走到 (n,m) 的方案数,没有任何障碍。
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
四个经典模型
1mn
2(mn--11)
3(n+mm--1 1)
4(n+nm)
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
越狱
监狱有连续编号为 1...n n 个房间,每个房间关押一个犯人,有
m 种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱,答案对

100003 取模 nm long long 范围内例如:当
n=3,m=2 时,答案为 6
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
越狱
计数题有一种技巧叫做取补集, 直接求可能发生越狱的方案数并不好求可能发生越狱的方案数

= 所有的方案数-不能发生越狱的方案数所有的方案数
=mn 不能发生越狱的方案数 =m (m - 1)n-1
Answer = mn - m (m - 1)n-1,快速幂即可
noip 基础数学 清华大学
.. .. .... .. .. .... .. .. .... .. .. .... .... .. ..

























前言 同余基础 进制转换 高精度 排列组合与计数问题
其他组合数公式
ni
=0
(-1)i (ni) = 0(
x + y)n =
ni
=0
(ni) xi yn-i
noip 基础数学 清华大学

猜你喜欢

转载自www.cnblogs.com/liumengliang/p/11209593.html