本专栏👉CSP-J/S初赛内容主要讲解信息学奥赛的初赛内容,包含计算机基础、初赛常考的C++程序和算法以及数据结构,并收集了近年真题以作参考。
如果你想参加信息学奥赛,但之前没有太多C++基础,请点击👉专栏:C++语法入门,如果你C++语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏:数据结构啦
目录
📕1 逻辑运算
📕2 位运算
📕3 运算级比较
📕4 相关例题讲解
🧠例题
🧠题解
📕并运算、交运算、差运算、非运算(区别于逻辑非运算)
🧠并运算
🧠交运算
🧠差运算
🧠非运算
逻辑运算先掌握各种运算,注意运算符的级别比较,做题是要细心。
1 逻辑运算
与(&&、∧):当A,B都为1时,其值为1,否则为零。
或(||、∨):当A,B都为0时,其值为0,否则为1。
非(!、¬):当A=0时,A的非为1,A=1时,A的非为0。
2 位运算
与(&、and):当A,B都为1时,其值为1,否则为零。
或(|、or):当A,B都为0时,其值为0,否则为1。
异或(^、⊕、xor):如果A、B两个值不相同,则异或结果为1;如果A、B两个值相同,异或结果为0。
3 运算级比较
括号 > 非 > 与 > 异或 > 或(位运算),如果加入加减乘除等,就是以下这样:
注意:同级的运算符不分高低,计算时按照从左到右运算。
4 相关例题讲解
例题
若A=True,B=False,C=True,D=False,以下逻辑运算表达式真的有( )。
A.(A∧B)∨(C∧D ∨¬A) B.((¬A ∧ B)∨ C)∧ ¬B
C.(B∨C∨D)∨D∧A D. A ∧(D ∨¬C)∧B
题解
一个个算结果,比如A选项(A∧B)∨(C∧D∨¬A) ,根据运算级的比较,我们可以定下运算的顺序,然后按运算顺序计算结果。注意,这类题是有个小技巧的。比如A选项可以先看中间的∨,为什么呢?因为∨的左右有一边是真就行,可以不去看另外一边。
A选项的结果是:(A∧B)∨(C∧D ∨¬A),(A∧B)=假,(C∧D ∨¬A)中C∧D =假,¬A=假,所以(C∧D ∨¬A)=假。于是A选项可以简写为:假∨(假 ∨假)= 假。
B选项的结果是:((¬A ∧ B)∨ C)∧¬B,如果¬B是假那么就可以不去看前面的((¬A ∧ B)∨ C),可惜的是¬B是真,那么就要看((¬A ∧ B)∨ C),发现C是真,所以不看(¬A ∧ B),于是B选项可以简写为:(?∨ 真)∧ 真 = 真。
C选项的结果是:(B∨C∨D)∨D∧A ,D∧A=假,所以不得不看前面部分(B∨C∨D),只要BCD有一个是真,那么(B∨C∨D)=真,而容易发现C=true。所以C选项可以简写为:真∨ 假 = 真。
D选项的结果是:A ∧(D ∨¬C)∧B,我们很容易发现D选项的特殊结构为 ?∧?∧?,三个?有一个是假,那么D为假,A和B不用计算便可看出,所以先发现B=假,所以D=假。
2004年和2005年都出现了集合运算,虽然后来没有再出现,但集合的运算还是需要掌握的。
并运算、交运算、差运算、非运算(区别于逻辑非运算)
并运算
比如AB,就是A集合和B集合里所有元素组成一个新集合,重复的元素只保留一份。AB —>{a, b, c, b, d, e}—>{a, b, c, d, e}。
交运算
比如AB,就是同时在A集合和B集合的元素组成一个新集合。AB —>{b}。
差运算
比如AB,就是A集合删去AB里的元素后组成一个新集合。AB —>{a, c}。
非运算
如是单目运算符,比如A。非运算有个特殊的要求:一定要说明全集。那么A就全集删去A集合中的元素,剩下的全集中的元素组成一个新集合。A= {d, e, f, g}。