CSPNOIP复习资料数学知识.docx
《CSPNOIP复习资料数学知识.docx》由会员分享,可在线阅读,更多相关《CSPNOIP复习资料数学知识.docx(26页珍藏版)》请在冰豆网上搜索。
CSPNOIP复习资料数学知识
第七章信息奥赛中的数学知识
一、逻辑代数
1、“与”运算(“·”,“∧”,and)
在逻辑问题中,如果决定某一事件发生的多个条件必须同时具备,事件才能发生,则这种因果关系称之“与”逻辑(并且)。
“与”运算又称为逻辑乘,其运算符号为“·”,有时也用“∧”表示。
两变量“与”运算关系可表示为:
F=A·B或者F=A∧B
“与”运算的运算法则为:
0·0=01·0=0
0·1=01·1=1
其中,1表示真,0表示假。
结论:
若A、B均为1,则F为1;否则,F为0
推广:
A·0=0A·1=A
2、“或”运算(“+”,“∨”,or)
在逻辑问题的描述中,如果决定某一事件是否发生的多个条件中,只要有一个或一个以上条件成立,事件便可发生,则这种因果关系称之为“或”逻辑。
“或”运算又称逻辑加,其运算符号为“+”,有时也用“∨”表示。
两变量“或”运算的关系可表示为:
F=A+B或者F=A∨B
“或”运算的运算法则为:
0+0=01+0=1
0+1=11+1=1
结论:
仅当A、B均为0时,F才为0
推广:
A+0=AA+1=1
3.“非”运算¬
在逻辑问题中,如果某一事件的发生取决于条件的否定,即事件与事件发生的条件之间构成矛盾,则这种因果关系称为“非”逻辑。
“非”运算也叫求反运算或者逻辑否定。
其运算符号为“-”,有时也用“¬”表示。
“非”运算的逻辑关系可表示为:
“非”运算的运算法则为:
¬0=1¬1=0
逻辑运算和C++中的逻辑运算相似,只不过符号不同而已。
逻辑代数的运算符和C++的运算符有如下对应关系:
┓或not对应!
(非运算)
∨或+或or对应||(或运算)
∧或·或and对应&&(与运算)
它们的运算顺序和C++中的规定是一致的,“非”优先级最高,“或”最低。
例题:
下列逻辑运算正确的是()。
A、A·(A+B)=AB、A+(A·B)=AC、A·(B+C)=A·B+A·C
D、A+(B·C)=(A+B)·(A+C)E、A+1=A
练习:
1.设A=true,B=false,C=true,D=false,以下逻辑运算表达式值为真的是()。
A.(A∧B)∨(C∧D∨A)B.((A∧B)∨C)∧D
C.(B∨C∨D)∧D∧AD.A∧(D∨C)∧B
2.设A=B=true,C=D=false,以下逻辑运算表达式值为假的有()。
A.(¬A∧B)∨(C∧D∨A)B.¬(((A∧B)∨C)∧D)
C.A∧(B∨C∨D)∨DD.(A∧(D∨C))∧B
4.C++中的位运算
位运算就是指对数据进行二进制位的运算。
位运算的操作数,只能是整型或字符型数据,不能为实型数据。
C++提供的位运算有:
名称
运算符
名称
运算符
按位与
&
按位异或
^
按位或
¦
左移
<<
取反
~
右移
>>
(1)按位与运算(&)
将2个参加运算的操作数先转换成二进制数(补码),然后逐位运算,对应位都为1时,则该位的结果为1,否则为0,即:
0&0=00&1=01&0=01&1=1
例:
3&5=1
3的补码:
00000011
5的补码:
00000101
3&500000001
使用按位与运算可将一个数中的某些指定位清零如:
a:
0010110010101100
b:
0000000011111111(377)8
a&b0000000010101100
结果得到a的低8位
(2)按位或运算(¦)
运算规则:
参加运算的两个运算量之对应位,只要有一个为1,则该位的结果为1。
即:
0¦0=00¦1=11¦0=11¦1=1
例:
00110000(060)8
00001111(017)8
¦00111111(077)8
一个数与017进行按位或运算,可将该数的低4位全置为1;与0377进行按位或运算,可将该数的低8位全置为1。
(3)异或运算(^)
参加运算的两个运算量的对应位相同,则该位的结果为0。
否则为1。
即:
0^0=00^1=11^0=11^1=0
异或运算可使指定的位翻转,如:
01111010
^00001111对应原数的低4位均置为1
01110101原数的低4位被翻转
(4)取反运算(~)
对一个二进制数按位取反,即将0变为1,1变为0。
例如:
a的补码:
0000110010010011
~a1111001101101100
按位取反运算主要用途是间接构造一个数,以增强程序的可移植性。
例如,通过求~0,可以间接地构造一个各位全1的二进制数。
(5)按位左移运算(<<)
将一个操作数先转换成二进制数,然后将二进制数各位左移若干位,并在低位补若干个0,高位左移后溢出,舍弃不起作用。
按位左移n位相当于将操作数乘以2n。
例如:
7<<2按位左移表达式的值:
28
(6)按位右移运算(>>)
按位右移运算将一个操作数先转换成二进制数,然后将二进制数各位右移若干位,移出的低位舍弃;并在高位补位,补位分2种情况:
①若为无符号数,右移时左边高位移入0。
②若为有符号数,如果原来符号位为0(正数),则左边补若干0;如果原来符号位为1,左边补若干0的称为“逻辑右移”,左边补若干1的称为“算术右移”。
例:
a:
1001011111101101(113755)8
逻辑右移a>>1:
0100101111110110得(045766)8
算术右移a>>1:
1100101111110110得(145766)8
按位右移一位相当于除以2,右移n位相当于除以2n。
练习:
为了统计一个非负整数的二进制形式中1的个数,代码如下:
intCountBit(intx)
{
intret=0;
while(x)
{
ret++;
___________;
}
returnret;
}
则空格内要填入的语句是()。
A.x>>=1B.x&=x-1C.x|=x>>1D.x<<=1
提示:
一个无符号二进制数减1,相当于将该数从低位开始的第1个不是0的位及其以后的各位0变反。
如:
110101100-1=110101011。
二、排列组合
1.乘法原理
设完成一件事有m个步骤,第一个步骤有
种方法,第二个步骤有
种方法,…,第m个步骤有
种方法。
必须通过每一步骤,才算完成这件事,则完成这件事共有
种不同的方法。
例1:
若一个男人有三顶帽子和两件背心,问他可以有多少种打扮?
可以有
种打扮。
例2:
从甲地到乙地有2条路,从乙地到丙地有3条路,从丙地到丁地也有2条路。
问:
从甲地经乙、丙两地到丁地,共有多少种不同的走法?
2×3×2=12种走法
2.加法原理
设完成一件事有m种方式,第一种方式有
种方法,第二种方式有
种方法,…,第m种方式有
种方法。
无论通过哪一种方式的哪一种方法都能完成这件事,则完成这件事共有
种不同的方法。
例如,某人要从甲地到乙地去,可以乘火车,可以乘轮船,也可以坐飞机。
火车有3个班次,轮船有2班,而飞机则只有一班。
问乘坐不同班次的火车、轮船或是飞机,共有多少种不同方法可从甲地到达乙地?
答案当然是3+2+1=6种方法。
乘法原理和加法原理是两个很重要计数原理,它们不但可以直接解决不少具体问题,同时也是推导下面常用排列组合公式的基础。
练习:
下图中从A到C共有多少中走法?
3.排列
一般地,从n个不同的元素中任取出m个(m≤n)元素,按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列。
由排列的定义可以看出,两个排列相同,不仅要求这两个排列中的元素完全相同,而且各元素的先后顺序也一样,如果两个排列的元素不完全相同,或者各元素的排列顺序不完全一样,则这就是两个不同的排列。
从n个不同元素中取出m个(m≤n)元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,记作
。
排列数公式:
从n个不同元素取m个(1m=n时称全排列:
例:
如下图所示,n=4,m=3时,四个元素分别为A、B、C、D,则第一个位置可以有4中选择,第一个位置一旦选定,第二个位置就只剩下3中选择了,前两个位置定了,第三个位置则只有2中选择了。
由乘法原理,排列数为
种
例1:
学校师生合影,共8个学生,4个老师,要求老师在学生中间,且老师互不相邻,共有多少种不同的合影方式?
解:
先排学生共有
种排法,然后把老师插入学生之间的空档,共有7个空档可插,选其中的4个空档,共有
种选法.根据乘法原理,共有的不同坐法为
种.
结论1插入法:
对于某两个元素或者几个元素要求不相邻的问题,可以用插入法。
即先排好没有限制条件的元素,然后将有限制条件的元素按要求插入排好元素的空档之中即可。
例2:
5个男生3个女生排成一排,3个女生要排在一起,有多少种不同的排法?
解:
因为女生要排在一起,所以可以将3个女生看成是一个人,与5个男生作全排列,有
种排法,其中女生内部也有
种排法,根据乘法原理,共有
种不同的排法。
结论2捆绑法:
要求某几个元素必须排在一起的问题,可以用捆绑法来解决问题.即将需要相邻的元素合并为一个元素,再与其它元素一起作排列,同时要注意合并元素内部也可以作排列。
例3:
袋中有不同年份生产的5分硬币23个,不同年份生产的1角硬币10个,如果从袋中取出2元钱,有多少种取法?
分析:
此题是一个组合问题,若是直接考虑取钱的问题的话,情况比较多,也显得比较凌乱,难以理出头绪来.但是如果根据组合数性质考虑剩余问题的话,就会很容易解决问题。
解:
把所有的硬币全部取出来,将得到
0.05×23+0.10×10=2.15元,
所以比2元多0.15元,所以剩下0.15元即剩下3个5分或1个5分与1个1角,所以共有
种取法。
结论3剩余法:
在组合问题中,有多少取法,就有多少种剩法,他们是一一对应的,因此,当求取法困难时,可转化为求剩法.
例4:
学校安排考试科目9门,语文要在数学之前考,有多少种不同的安排顺序?
分析对于任何一个排列问题,就其中的两个元素来讲的话,他们的排列顺序只有两种情况,并且在整个排列中,他们出现的机会是均等的,因此要求其中的某一种情况,能够得到全体,那么问题就可以解决了.并且也避免了问题的复杂性。
解:
不加任何限制条件,整个排法有
种,“语文安排在数学之前考”,与“数学安排在语文之前考”的排法是相等的,所以语文安排在数学之前考的排法共有
结论4对等法:
在有些题目中,它的限制条件的肯定与否定是对等的,各占全体的二分之一。
在求解中只要求出全体,就可以得到所求。
例5:
某个班级共有43位同学,从中任抽5人,正、副班长、团支部书记至少有一人在内的抽法有多少种?
分析:
此题若是直接去考虑的话,就要将问题分成好几种情况,这样解题的话,容易造成各种情况遗漏或者重复的情况.而如果从此问题相反的方面去考虑的话,不但容易理解,而且在计算中也是非常的简便.这样就可以简化计算过程。
解:
43人中任抽5人的方法有
种,正副班长,团支部书记都不在内的抽法有
种,所以正副班长,团支部书记至少有1人在内的抽法有
种。
结论5排异法:
有些问题,正面直接考虑比较复杂,而它的反面往往比较简捷,可以先求出它的反面,再从整体中排除.
4.圆周排列
从n个不同的元素中取r个沿一圆周排列,排列的方案:
N个元素的圆周排列:
5.有重复元素的排列问题:
如:
n1个a,n2个b,n3个c,排成一排,有多少种排列方法。
6.组合
一般地,从n个不同元素中取出m个(m≤n)元素组成一组不计较组内各元素的次序,叫做从n个不同元素中取出m个元素的一个组合。
由组合的定义可以看出,两个组合是否相同,只与这两个组合中的元素有关,而与取到这些元素的先后顺序无关.只有当两个组合中的元素不完全相同时,它们才是不同的组合。
从n个不同元素中取出m个元素(m≤n)的所有组合的个数,叫做从n个不同元素中取出m个不同元素的组合数.记作
。
组合数公式:
从n个不同元素取m个(1m求从n个不同元素中取出m个元素排成一列的排列数
可以分两步求得:
第一步:
从n个不同元素中取出m个元素组成一组,共有
种方法;
第二步:
将每一个组合中的m个元素进行全排列,共有
种排法.
由乘法原理得到:
因此,
7.重复元素的组合问题
从n种不同的元素中取r个元素的组合,允许有重复元素的组合:
典型模型:
r个相同的小球,放到n个不同的盒子里,所有的放置方法。
例1邮局发行10种新邮票,有一个集邮爱好者购买了15张邮票,他有多少种买法?
解:
买邮票的任何一种方式都可以看做是从10个元素中取出15个元素的组合,因此买法种数为
三、集合及其运算
集合是由确定的、互相区别的一些对象组成的总体。
集合的每个对象称为元素。
如初一(11)班同学组成一个集合,里面的每个同学称为元素。
集合中的元素是确定的、互异的,又是无序的。
不含任何元素的集合叫做空集,记作
。
集合可分为有限集与无限集。
元素与集合间的关系运算:
属于符号记作“∈”;不属于,符号记作“
”。
对于两个集合A与B,如果集合A的任何一个元素都是集合B的元素,就说集合B包含集合A,记作A
B(读作A包含于B),这时也说集合A是集合B的子集。
也可以记作B
A(读作B包含A)。
①子集有传递性,若A
B,B
C,则有A
C.
②空集
是任何集合的子集,即
A
③真子集:
若A
B,且至少有一个元素b∈B,而b
A,称A是B的真子集.记作A
B。
④若A
B且B
A,那么A=B
⑤含n(n∈N*)个元素的集合A的所有子集的个数是:
2的n次方个。
常用的集合表示法:
列举法:
数的集合{1,3,5,7,9,11,13}
描述法:
小于14大于0的奇数组成的集合、初三
(1)班的全体同学组成的集合。
集合的运算包括并(∪)、交(∩)、差(-)、补(~或ˉ)几种。
例如,设全集I={0,1,2,3,4,5,6,7,8,9},A={2,4},B={4,5,6,7},C={0,8,9},D={1,2,3},则
A∪B={2,4,5,6,7},A∪B∪C∪D={0,1,2,3,4,5,6,7,8,9}=I
A∩B={4},A-B={2},B-A={5,6,7},C-A={0,8,9},~A={0,1,3,5,6,7,8,9}
1.集合问题的图示法
集合问题可由文氏图来描述,文氏图由矩形、圆形及内部的点组成,其中矩形及其内部的点表示全集的所有元素;矩形内的圆(或其它闭曲线)表示不同的集合;圆(或闭曲线)内部的点则表示相应集合的元素。
以下是文氏图描述的集合的四种运算。
1.容斥原理
在计数时,为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是,先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。
对有限集合S,用S表示S的元素个数容斥原理的第一形式:
设A,B是有限集合,则
|A∪B|=|A|+|B|-|A∩B|
容斥原理的第二形式:
设A、B、C是有限集合,则
|A∪B∪C|=|A|+|B|+|c|-|A∩B|-|B∩C|-|A∩C|+|A∩B∩C|
例1:
某单位的100名员工进行调查,结果发现他们喜欢看球赛和电影、戏剧。
其中58人喜欢看球赛,38人喜欢看戏剧,52人喜欢看电影,既喜欢看球赛又喜欢看戏剧的有18人,既喜欢看电影又喜欢看戏剧的有16人,三种都喜欢看的有12人,则只喜欢看电影的有:
A、22人B、28人C、30人D、36人
解:
设同时只喜欢电影和球赛的人数为x,由已知可知,只喜欢喜剧和球赛的有6人,只喜欢电影和戏剧的4人,如下图所示。
只喜欢电影的人数为52-(x+12+4)=36-x
只喜欢球赛的人数为58-(x+6+12)=40-x
只喜欢喜剧的人数为38-(4+12+6)=16
如下图所示,以上三个集合的总人数36-x+40-x+16再加上中间四部分的总人数4+12+6+x为100人,即
36-x+40-x+16+4+12+6+x=100,可解得x=14,因此只喜欢看电影的人数为36-14=22人。
选A。
例2:
有47本书,有27本是小说,32本是红皮的,6本既不是红皮的,也不是小说。
问有多少本红皮小说?
解:
设小说集为A,红色封面书集合为B,则|A∪B|=47-6=41,即这41本有可能是小说或是红色封面。
红色封面的非小说数量为|B-A|=|A∪B|-|A|=41-27=14本,所以后色封面的小说|A∩B|=32-14=18本。
例3:
外语学校有英语、法语、日语老师总共27人,其中只能教英语的有8人,只能教日语的有6人,能教英语、日语的有5人,能教法语、日语的有3人,能教英、法语的有4人,三种都能教的有2人,则只能教法语的有:
A、4人B、5人C、6人D、7人
练习:
1.设全集I={a,b,c,d,e,f,g,h},集合B∪A={a,b,c,d,e,f},C∩A={c,d,e},A∩~B={a,d},那么集合C∩B∩A为()。
A.{c,e}B.{d,e}C.{e}D.{c,d,e}E.{d,f}
2.设含有10个元素的集合的全部子集数为S,其中由7个元素组成的子集数为T,则T/S的值为()。
A、5/32B、15/128C、1/8D、21/128
四、数论
1.整除与约数
一个整数可以被另一个整数整除是数论中的一个关键概念。
符号d|a(读作“d整除a”)的含义是,存在摸个数k,使得a=kd。
任何整数均可整除0。
如果a>0且d|a,那么|d|<=|a|。
如果d|a,则称a是d的倍数。
如果d|a且d>=0,则称d是a的约数。
注意,d|ad|a当且仅当−d|a−d|a,即a的任何约数的负数同样可以整除a。
因此,不失一般性,可规定约数为非负数。
非零整数a的约数应至少为1,且不会大于|a|。
例如,24的约数是1,2,3,4,6,8,12和24。
任何正整数a均可被平凡约数1和其自身a所整除。
整数a的非平凡约数称为a的因子。
例如,20的因子是2,4,5和10。
2.素数与合数
如果一个数a>1且只能被平凡约数1和它自身所除,则这个数是素数。
素数游戏的特殊的性质。
它在数论中也扮演着十分重要的角色。
前20个素数按序排列如下:
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71
如果一个整数a>1且不是素数,则称之为合数。
例如,39是一个合数,因为3|39。
称整数1是基本单位,并且它既不是素数也不是合数。
同样,整数0和所有负整数既不是素数也不是合数。
3.除法定理、余数和等模
给定一个整数n,我们可以将整数集划分成n的倍数和非n倍数两部分。
通过计算非n的倍数除以n的余数可以对非n倍数进行有效分类。
而许多数论理论正是通过这种分类来改进对n的北方和非n倍数的划分。
下面的定理给出该改进的理论基础。
这里,我们忽略了其证明。
定理1(除法定理):
对于任何整数a和任何正整数n,存在唯一整数q和r,满足0<=r称q=⌊a/n为除法的商,r=amodn为除法的余数。
n|a当且仅当amodn=0。
根据整数模n的余数,我们可以将所有整数划分成n个等价类。
包括整数a的模n等价类为:
[a]n=a+kn:
k∈Z
例如,[3]7={…,-11,-4,3,10,17,…},这个集合同时也可以表示为[-4]7和[10]7。
a∈[b]n和a≡b(modn)是等价的。
所有这类等价类的集合是Zn=[a]n:
0<=a<=n−1,即可以用每个等价类最小的非负元素来表示该等价类。
例如,上面的[3]7。
但是,也可以用等价类中的任意数表示该等价类,例如,在我们说-1是Zn的一个元素时,实际上指的是[n−1]n,因为-1≡n-1(modn)。
4.公约数与最大公约数
如果d是a的约数并且d也是b的约数,则d是a与b的公约数。
例如,30的约数包括1、2、3、5、6、10、15、30,24的约数包括1、2、3、4、6、8、12、24,因此24与30的公约数为1、2、3和6。
需要注意的是,1是任意两个整数的公约数。
公约数的一条重要的性质是:
d|a且d|b蕴含着d|(a+b)且d|(a−b)
更一般的,对于任意整数x和y,有
d|a且d|b蕴含着d|(ax+by)
并且,如果a|b,那么|a|<=|b|,或者b=0,这更说明
a|b且b|a蕴含着a=±b
两个不同时为0的整数a与b的公约数中最大的称其为最大公约数,记作gcd(a,b)。
例如,gcd(24,30)=6,gcd(5,7)=1,gcd(0,9)=0。
如果a与b不同时为0,则gcd(a,b)是一个在1与min(|a|,|b|)之间的整数。
定义gcd(0,0)=0,该定义是使gcd函数的基本性质普遍成立所必不可少的。
下列是gcd函数的基本性质:
(1)gcd(a,b)=gcd(b,a)
(2)gcd(a,b)=gcd(−a,b)
(3)gcd(a,b)=gcd(|a|,|b|)
(4)gcd(a,0)=|a|
(5)gcd(a,ka)=|a|对任意k∈Z
下面的定理给出了gcd(a,b)的另外一个有用特征。
定理2:
如果任意整数a和b都不为0,则gcd(a,b)是a与b的线性组合集ax+by:
x,y∈Z中的最小正元素。
推论1:
对任意整数a与b,如果d|a且d|b,则d|gcd(a,b)。
证明:
根据定理2,gcd(a,b)是a与b的一个线性组合,所以推论成立。
推论2:
对所有整数a和b以及任意非负整数n,有gcd(an,bn)=n∗gcd(a,b)
证明:
如果n=0,该推论显然成立。
如果n>0,则gcd(an,bn)是集合{anx+bny:
x,y∈Z∈Z}中最小正元素的n倍。
推论3:
对于任意正整数n、a和b,如果n|ab且gcd(a,n)=1,则n|b。
证明由同学自己完成。
求最大公约数的欧几里德算法:
原理:
如果用一条线段表示最大公约数,由于两个数字都是最大公约数的倍数,因此可用多条线段来表示这两个数:
我们发现,大的数除以小的数得到的余数,仍然