1、CSPNOIP复习资料数学知识第七章 信息奥赛中的数学知识一、 逻辑代数1、 “与” 运算( “”, “” ,and)在逻辑问题中,如果决定某一事件发生的多个条件必须同时具备,事件才能发生,则这种因果关系称之“与”逻辑(并且)。“与”运算又称为逻辑乘,其运算符号为“”,有时也用“”表示。两变量“与”运算关系可表示为 : F = AB 或者 F = AB“与”运算的运算法则为:00 = 0 10 = 001 = 0 11 = 1其中,1表示真,0表示假。结论:若A、B均为1,则F为1;否则,F为0推广:A0=0 A1=A、“或”运算( “+”, “” ,or)在逻辑问题的描述中,如果决定某一事件
2、是否发生的多个条件中,只要有一个或一个以上条件成立,事件便可发生,则这种因果关系称之为“或”逻辑。“或”运算又称逻辑加,其运算符号为“+”,有时也用“”表示。两变量“或”运算的关系可表示为:F = A + B 或者 F = A B“或”运算的运算法则为:0 + 0 = 0 1 + 0 = 10 + 1 = 1 1 + 1 = 1结论:仅当A、B均为0时,F才为0 推广:A+0=A A+1=13.“非”运算 在逻辑问题中,如果某一事件的发生取决于条件的否定,即事件与事件发生的条件之间构成矛盾,则这种因果关系称为“非”逻辑。“非”运算也叫求反运算或者逻辑否定。其运算符号为“-”,有时也用“”表示。
3、“非”运算的逻辑关系可表示为:“非”运算的运算法则为: 0 =1 1 =0逻辑运算和C+中的逻辑运算相似,只不过符号不同而已。逻辑代数的运算符和C+的运算符有如下对应关系: 或 not 对应 !(非运算) 或 + 或 or 对应 | (或运算) 或 或 and 对应 &(与运算)它们的运算顺序和C+中的规定是一致的,“非”优先级最高,“或”最低。例题:下列逻辑运算正确的是( )。A、A(A + B)=A B、A+(AB)= A C、A(B+C)= AB+ACD、A+(BC)=(A+B)(A+C) E、A+1=A 练习:1.设A=true,B=false,C=true,D=false,以下逻辑运
4、算表达式值为真的是( )。 A. (AB)(CDA) B. (AB)C)D C. (BCD)DA D. A(DC)B 2.设A=B=true,C=D=false,以下逻辑运算表达式值为假的有( )。 A. ( AB)(CDA) B. (AB)C)D) C. A(BCD)D D. (A(DC) B4. C+中的位运算位运算就是指对数据进行二进制位的运算。位运算的操作数,只能是整型或字符型数据,不能为实型数据。C+提供的位运算有:名称运算符名称运算符按位与&按位异或按位或左移(1)按位与运算(&)将2个参加运算的操作数先转换成二进制数(补码),然后逐位运算,对应位都为1时,则该位的结果为1,否则为
5、0 ,即: 0 & 0 = 0 0 & 1 = 0 1 & 0= 0 1 & 1= 1例: 3&5=1 3的补码: 0 0 0 0 0 0 1 1 5的补码: 0 0 0 0 0 1 0 1 3&5 0 0 0 0 0 0 0 1使用按位与运算可将一个数中的某些指定位清零如: a: 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 b: 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 (377)8 a &b 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 结果得到 a 的低 8 位 (2)按位或运算()运算规则:参加运算的两个运算量之对应位,只要有
6、一个为1,则该位的结果为1。即: 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 1例: 00110000 (060)8 00001111 (017)8 00111111 (077)8一个数与017进行按位或运算,可将该数的低4位全置为1;与0377进行按位或运算,可将该数的低8位全置为1。(3)异或运算()参加运算的两个运算量的对应位相同,则该位的结果为0。否则为1。即: 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0异或运算可使指定的位翻转,如: 01111010 00001111 对应原数的低4位均置为1 01110101 原数的低4位被翻转(4)取反运算()
7、对一个二进制数按位取反,即将0变为1,1变为0。例如: a 的补码: 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 a 1 1 1 1 0 0 1 1 0 1 1 0 1 1 0 0 按位取反运算主要用途是间接构造一个数,以增强程序的可移植性。例如,通过求0,可以间接地构造一个各位全1的二进制数。 (5)按位左移运算()将一个操作数先转换成二进制数,然后将二进制数各位左移若干位,并在低位补若干个0,高位左移后溢出,舍弃不起作用。按位左移n位相当于将操作数乘以 2n。例如: 7) 按位右移运算将一个操作数先转换成二进制数,然后将二进制数各位右移若干位,移出的低位舍弃;并在高位补
8、位,补位分2种情况: 若为无符号数,右移时左边高位移入0。 若为有符号数,如果原来符号位为0(正数),则左边补若干0 ;如果原来符号位为1 ,左边补若干0的称为“逻辑右移” ,左边补若干1的称为“算术右移”。例: a: 1001011111101101 (113755)8 逻辑右移 a1:0100101111110110 得(045766)8 算术右移 a1:1100101111110110 得(145766)8按位右移一位相当于除以2 ,右移 n 位相当于除以2n。练习:为了统计一个非负整数的二进制形式中 1 的个数,代码如下:int CountBit(int x) int ret = 0;
9、 while (x) ret+; _; return ret; 则空格内要填入的语句是( )。 A. x = 1 B. x &= x - 1 C. x |= x 1 D. x = 1 提示:一个无符号二进制数减1,相当于将该数从低位开始的第1个不是0的位及其以后的各位0变反。如:110101100-1=110101011。二、 排列组合1. 乘法原理设完成一件事有m个步骤,第一个步骤有种方法,第二个步骤有种方法,第m个步骤有种方法。必须通过每一步骤,才算完成这件事,则完成这件事共有种不同的方法。例1:若一个男人有三顶帽子和两件背心,问他可以有多少种打扮?可以有种打扮。例2:从甲地到乙地有2条路
10、,从乙地到丙地有3条路,从丙地到丁地也有2条路。问:从甲地经乙、丙两地到丁地,共有多少种不同的走法?232=12种走法2. 加法原理设完成一件事有m种方式,第一种方式有种方法,第二种方式有种方法,第m种方式有种方法。无论通过哪一种方式的哪一种方法都能完成这件事,则完成这件事共有种不同的方法。例如,某人要从甲地到乙地去,可以乘火车,可以乘轮船,也可以坐飞机。火车有3个班次,轮船有2班,而飞机则只有一班。问乘坐不同班次的火车、轮船或是飞机,共有多少种不同方法可从甲地到达乙地?答案当然是3+2+1=6种方法。乘法原理和加法原理是两个很重要计数原理,它们不但可以直接解决不少具体问题,同时也是推导下面常
11、用排列组合公式的基础。练习:下图中从A到C共有多少中走法?3. 排列一般地,从n个不同的元素中任取出m个(mn)元素,按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列。由排列的定义可以看出,两个排列相同,不仅要求这两个排列中的元素完全相同,而且各元素的先后顺序也一样,如果两个排列的元素不完全相同,或者各元素的排列顺序不完全一样,则这就是两个不同的排列。从n个不同元素中取出m个(mn)元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,记作。排列数公式: 从n个不同元素取 m个(1mn)的不同排列总数为:m = n时称全排列:例:如下图所示,n=4,m =3时,四个
12、元素分别为A、B、C、D,则第一个位置可以有4中选择,第一个位置一旦选定,第二个位置就只剩下3中选择了,前两个位置定了,第三个位置则只有2中选择了。由乘法原理,排列数为种例1:学校师生合影,共8个学生,4个老师,要求老师在学生中间,且老师互不相邻,共有多少种不同的合影方式?解:先排学生共有种排法,然后把老师插入学生之间的空档,共有7个空档可插,选其中的4个空档,共有 种选法.根据乘法原理,共有的不同坐法为种.结论1 插入法:对于某两个元素或者几个元素要求不相邻的问题,可以用插入法。即先排好没有限制条件的元素,然后将有限制条件的元素按要求插入排好元素的空档之中即可。例2:5个男生3个女生排成一排
13、,3个女生要排在一起,有多少种不同的排法? 解:因为女生要排在一起,所以可以将3个女生看成是一个人,与5个男生作全排列,有种排法,其中女生内部也有种排法,根据乘法原理,共有种不同的排法。结论2 捆绑法:要求某几个元素必须排在一起的问题,可以用捆绑法来解决问题.即将需要相邻的元素合并为一个元素,再与其它元素一起作排列,同时要注意合并元素内部也可以作排列。例3:袋中有不同年份生产的5分硬币23个,不同年份生产的1角硬币10个,如果从袋中取出2元钱,有多少种取法?分析:此题是一个组合问题,若是直接考虑取钱的问题的话,情况比较多,也显得比较凌乱,难以理出头绪来.但是如果根据组合数性质考虑剩余问题的话,
14、就会很容易解决问题。解:把所有的硬币全部取出来,将得到 0.0523+0.1010=2.15元,所以比2元多0.15元,所以剩下0.15元即剩下3个5分或1个5分与1个1角,所以共有种取法。结论3 剩余法:在组合问题中,有多少取法,就有多少种剩法,他们是一一对应的,因此,当求取法困难时,可转化为求剩法.例4:学校安排考试科目9门,语文要在数学之前考,有多少种不同的安排顺序?分析 对于任何一个排列问题,就其中的两个元素来讲的话,他们的排列顺序只有两种情况,并且在整个排列中,他们出现的机会是均等的,因此要求其中的某一种情况,能够得到全体,那么问题就可以解决了.并且也避免了问题的复杂性。解:不加任何
15、限制条件,整个排法有种,“语文安排在数学之前考”,与“数学安排在语文之前考”的排法是相等的,所以语文安排在数学之前考的排法共有 结论4 对等法:在有些题目中,它的限制条件的肯定与否定是对等的,各占全体的二分之一。在求解中只要求出全体,就可以得到所求。例5:某个班级共有43位同学,从中任抽5人,正、副班长、团支部书记至少有一人在内的抽法有多少种?分析:此题若是直接去考虑的话,就要将问题分成好几种情况,这样解题的话,容易造成各种情况遗漏或者重复的情况.而如果从此问题相反的方面去考虑的话,不但容易理解,而且在计算中也是非常的简便.这样就可以简化计算过程。解:43人中任抽5人的方法有种,正副班长,团支
16、部书记都不在内的抽法有种,所以正副班长,团支部书记至少有1人在内的抽法有种。结论5 排异法:有些问题,正面直接考虑比较复杂,而它的反面往往比较简捷,可以先求出它的反面,再从整体中排除.4. 圆周排列从n个不同的元素中取r个沿一圆周排列,排列的方案:N个元素的圆周排列:5. 有重复元素的排列问题:如:n1个a,n2个b,n3个c,排成一排,有多少种排列方法。6. 组合一般地,从n个不同元素中取出m个(mn)元素组成一组不计较组内各元素的次序,叫做从n个不同元素中取出m个元素的一个组合。由组合的定义可以看出,两个组合是否相同,只与这两个组合中的元素有关,而与取到这些元素的先后顺序无关.只有当两个组
17、合中的元素不完全相同时,它们才是不同的组合。从n个不同元素中取出m个元素(mn)的所有组合的个数,叫做从n个不同元素中取出m个不同元素的组合数.记作 。组合数公式: 从n个不同元素取 m个(1 m0且d|a,那么|d|=0,则称d是a的约数。注意,d|ad|a当且仅当d|ad|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
18、1且只能被平凡约数1和它自身所除,则这个数是素数。素数游戏的特殊的性质。它在数论中也扮演着十分重要的角色。前20个素数按序排列如下: 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71如果一个整数a1且不是素数,则称之为合数。例如,39是一个合数,因为3|39。称整数1是基本单位,并且它既不是素数也不是合数。同样,整数0和所有负整数既不是素数也不是合数。3. 除法定理、余数和等模给定一个整数n,我们可以将整数集划分成n的倍数和非n倍数两部分。通过计算非n的倍数除以n的余数可以对非n倍数进行有效分类。而许多数论理论正是通过这种分类来改进
19、对n的北方和非n倍数的划分。下面的定理给出该改进的理论基础。这里,我们忽略了其证明。定理1(除法定理):对于任何整数a和任何正整数n,存在唯一整数q和r,满足0=rn且a=qn+r。称q=a/n为除法的商,r=a mod n为除法的余数。n|a当且仅当a mod n=0。 根据整数模n的余数,我们可以将所有整数划分成n个等价类。包括整数a的模n等价类为:an=a+kn:kZ例如,37=,-11,-4,3,10,17,这个集合同时也可以表示为-47和107。abn和ab(mod n)是等价的。所有这类等价类的集合是 Zn=an:0=a=n1,即可以用每个等价类最小的非负元素来表示该等价类。例如,
20、上面的37。但是,也可以用等价类中的任意数表示该等价类,例如,在我们说-1是Zn的一个元素时,实际上指的是n1n,因为-1n-1(mod n)。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|(ab)更一般的,对于任意整数x和y,有d|a且d|b蕴含着d|(ax+by)并且,如果a|b,那么|a|0,则gcd(an,bn)是集合anx+bny:x,yZZ中最小正元素的n倍。推论3:对于任意正整数n、a和b,如果n|ab且gcd(a,n)=1,则n|b。证明由同学自己完成。求最大公约数的欧几里德算法:原理:如果用一条线段表示最大公约数,由于两个数字都是最大公约数的倍数,因此可用多条线段来表示这两个数:我们发现,大的数除以小的数得到的余数,仍然
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1