C++信息学竞赛初赛笔试答案(2023年北京海淀区)
一、CCAAB ABCCA CBCBB CBAAC DAACC二、1.B,A,B, A,D 2. A,B,B,A三、CCCAC。
目录
一、CCAAB ABCCA CBCBB CBAAC DAACC
二、1.B,A,B, A,D 2. A,B,B,A
三、CCCAC
一、选择题
第1题 正整数319和377的最大公约数是(C)
A.27
B.33
C.29
D.31
解析:利用辗转相除法计算,377%319=58,319%58=29,58%29=0,所以319和377最大公约数是29
第2题 与十进制数1770对应的八进制数是(C)
A. 3350
B. 3351
C. 3352
D. 3450
解析:把四个选项八进制转换成十进制数,A(3350)8=3*8^3+3*8^2+5*8+0=1536+192+40=1768,1768比1770少2,A(3350)8加上2=C(3352)8,所以选择C选项
第3题 十六进制数2070和八进制数34求和的结果是(A)
A 用十进制数表示的结果为8332
B.用十六进制数表示的结果为208A
C.用二进制数表示的结果为100000000110
D.用八进制数表示的结果为20212
解析:不同进制之间的算数运算,我们需要转化成统一的进制,可以借助二进制来转换,(2070)16转换成二进制(一位转换成4位)0010 0000 0111 0000,二进制转换成八进制(三位转换成1位) 0 010 000 0 01 11 0 000 =(20160)8,八进制20160加上34等于20214,所以D选项错误,(20214)8=(010 000 010 001 100)2;所以C选项错误,(010 000 010 001 100)2=010 0000 1000 1100=(208C)16,所以B选项错误;(208C)16=2*16*16*16+8*16+12=8332,所以A选项正确
第4题 在C++语言中,按位或运算符(|)是指参加运算的两个数,按二进制位进行"或"运算,若两个数对应位上有一个为1、则该位上或运算的结果为1,否则为 0。异或运算符(^)是指参加运算的两个数,按二进制位进行“异或"运算,若 两个数对应位值不同,则该位结果异或运算的结果为1,否则为0。请计算表达式(23|2)^5的值是(A)。
A.18
B.1
C.23
D.32
解析:23转换为二进制数为10111;2转换为二进制为10;5转换为二进制为101;10111|10=10111,10111^101=10010,再次转换成十进制,16+2=18
第5题 在C++语言中,三种逻辑运算符运算(注意这里不是按位运算)规则如下:
判断a等于0或b等于0或c等于0的正确的条件表达式是( B )
A. !((a!=0)((b!=0)
B.!((a!=0)&&(b!=0)&&(c!=0))
C.!(a==0&&b==0)ll(c!=0)
D.(a=0)&&(b=0)&&(c=0)
解析:(a!=0)&&(b!=0)&&(c!=0)的取反操作就是单反a b c有一个等于0,整个表达式取反就为真,所以符合a等于0或b等于0或c等于0的正确的条件表达式要求。
第6题 如果字符串s在字符串T中出现了,则字符串s被称作字符串T的子串。设字符串T="Olympic",T的非空子串的数目是(A)。
A.28
B.29
C.16
D.17
解析:一个字符串的非空子串的个数公式:n(n+1)/2,其中n为字符串的长度
第7题 将数组{8,23,4,16,77,-5,53,100}中的元素按从大到小的顺序排列,每次可以交换任意两个元素,最少需要交换( B )次
A. 4
B. 5
C. 6
D. 7
解析:最少需要交换几次
{100,77,53,23,16,8,4,-5}
{8,23,4,16,77,-5,53,100}
100和8交换,{100,23,4,16,77,-5,53,8}
77和23交换;8和-5交换;{100,77,4,16,23,8,53,-5}
4和53交换;16和23交换;{100,77,53,23,16,8,4,-5}
所以最少5次交换,就可以得到有序的序列了。
第8题 书架上有21本书,编号从1到21、从其中选4本,其中每两本的编号都不相邻的选法一共有( C )种。
A 1530
B.3020
C.3060
D.4096
解析:(出自NOIP2008提高的填空)假装只有18本书,任意选4本 C(18,4),然后四个两两之间加一本书即可C(18,4)=3060
第9题 队列快照问题:队列快照是指在某一时刻队列中的元素组成的有序序列。例如, 当元素1,2,3入队,元素1出队后,此刻的队列快照是2,3。当元素2,3也出队后, 队列快照是"",即为空。现有3个正整数元素依次入队、出队。已知它们的和为8, 则共有( )种可能的不同的队列快照(不同队列的相同快照只计一次)。例 如,“5,1"、“4,2,2"、“都是可能的队列快照;而"7"不是可能的队列快照,因为 剩下的2个正整数的和不可能是1。
A 36
B.42
C.49
D.58
解析:8=1+1+6=1+2+5=1+3+4=1+4+3=1+5+2=1+6+1 6*3=18种
=2+1+5=2+2+4=2+3+3=2+4+2=2+5+1 5*3=15种
=3+1+4=3+2+3=3+3+2=3+4+1
=4+1+3=4+2+2=4+3+1
=5+1+2=5+2+1
=6+1+1
第10题 定义字符串的基本操作为:删除一个字符、插入一个字符和将一个字符修改成另外一个字符这三种操作。将字符串A变成字符串B的最少操作步数,称为字符串A到字符串B的编辑距离。字符串“ABCDEFG”到字符串“BADECG”的编辑距离为(A )
A. 3
B. 4
C. 6
D. 7
解析:思考,7个字符变成了6个字符,消失的字符是F,先交换C和F,ABFDECG,在交换A和F,FBADECG,最后删除多余的第1个F,即可得到字符串BADECG,所以最少3次操作
第11题 在数组A[X]中,若存在(i<j)&& (A[i]>A[j]) ,则称(A[i],A[j])为数组A[X]的一个逆序对。对于序列7,5,1,9,3,6,8,4,在不改变顺序的情况下,去掉( C )会使逆序对的个数减少3。
A. 7
B. 5
C. 3
D. 8
解析:序列7,5,1,9,3,6,8,4的逆序对有7,5;7,1;7,3;7,6;7,4; 5,1;5,3;5,4; 9,3;9,6;9,8;9,4; 6,4; 8,4; 共14种,去掉7,减少5种;去掉5,减少4种;去掉3,减少3种;去掉8,减少1种。
第 12题 定义一种字符串操作,一次可以将其中一个元素移到任意位置。举例说明,对于字符串BCA可以将“A”移到“B”之前,变字符串“ABC”。如果要将字符串“DACHEBGIF”变成“ABCDEFGHI”最少需要( B )次操作。
A. 3
B. 4
C. 5
D. 6
解析:要将字符串“DACHEBGIF”变成“ABCDEFGHI”,首先A B C三个位置要到D前面去,移动B D位置操作次数最少,2次操作后ABCDHEGIF,HEGIF需要变成EFGHI,移动F H位置操作次数最少,2次操作后EFGHI,所以一共4次就可以完成
第13题 原字符串中任意一段连续的字符所组成的新字符串称为子串。则字符"AAABBBCCC"共有
( C )个不同的非空子串。
A. 3
B. 12
C. 36
D. 45
解析:字符串非空子串=n(n+1)/2,n等于字符串长度。但是要求是不同的非空子串,所以换一种思路,长度为1的不同子串有A B C一共3种;长度为2的不同子串有AA AB BB BC CC一共5种;长度为3的子串有AAA AAB ABB BBB BBC BCC CCC一共7种,长度为4的子串AAAB AABB ABBB BBBC BBCC BCCC一共6种,长度为5的子串有AAABB AABBB ABBBC BBBCC BBCCC一共5种,长度为6AAABBB AABBBC ABBBCC BBBCCC一共4种,长度为7有3种,长度为8有2种,合计36种。
第14题 如图,每条边上的数字表示该边的长度,则从A到E的最短距离是( B )。
A.10
B.11
C.12
D.13
解析:A到E最后都得到达C F D三个顶点,这三个顶点到E的距离最短排序D<F<C,排除最后C到E的路径,A到达D最短是A G D,一共8个单位,A到达F最短是A B C F,一共是5个单位,8+4>5+6,所以A到E的最短距离是11
第 15 题 重新排列 1234 使得每一个数字都不在原来的位置上,一共有( B )种排法。
A.7
B.9
C.24
D.44
解析:根据排列组合规律,3*3=9种。第一位为2时,一共有2143、2341、2413;第一位为3时,一共有3142、3412、3421;第一位为4时,一共有4123、4312、4321,一共9种
第16题 在某大型国际比赛期间,主办单位为了欢迎来自中国的选手,举行了盛大的晚宴。在第十八桌,有5名大陆选手和 5名港澳选手共同进膳。为了增进交流。他们决定相隔就坐,即每个大陆选手左右旁都是港澳选手,每个港澳选手左右旁都是大陆选手。那么,这一桌一共有( C )种不同的就坐方案。注意:如果在两个方案中,每个选手左边相邻的选手均相同,则视为同一个方案。
A. 1200
B. 2480
C. 2880
D. 14400
解析:相当于1个圆,十个人。先随便找个座,让人去坐,有10个可能,然后顺时针走,下一个座就有5种可能,再下一个就4个,再下一个还是4个,以此类推,就是10*5*4*4*3*3*2*2*1*1。这其中有重复的,同一种坐法,可以绕着桌子走一圈,就是上一个人坐到下一个人的位置,串一下,这样所有坐法就算重复了10次,再除以10就行了。就是5*4*4*3*3*2*2*1*1=2880
第 17 题 在不超过 10000 的正整数中,与10000互质的正整数有( B )个。
A 2000
B.4000
C.6000
D.8000
解析:与10000互质因数不能有2、5,所以不能是偶数以及5的倍数,10000以内2的倍数有5000个,5的倍数有2000个,但是存在重复的,10的倍数都是重复的,一共有1000个重复的,所以与10000互质的正整数有10000-5000-1000=4000个
第 18 题 一个 1x8 的方格图形(不可旋转) 用黑、白两种颜色填涂每个方格。如果每个方格只能填涂一种颜色,且不允许两个黑格相邻,共有 ( A ) 种填涂方案。
A. 55
B. 68
C. 72
D. 82
解析:8个白格,1种;7个白格,C(8,1) = 8种;6个白格,C(7,2) = 21种;5个白格,C(6,3) = 20种;4个白格,C(5,4) = 5种;3个白格,C(4,4) = 1种,合计8+21+20+5+1=55种
第 19 题 一个人站在坐标(0,0) 处,面朝x轴正方向。第一轮,他向前走1单位距离,然后右转;第二轮,他向前走 2 单位距离,然后右转;第三轮,他向前走 3单位距离,然后右转.....他一直这么走下去。请问第 2017 轮后,它的坐标是: (_,_)。( A )
A. 1009,1008
B. 1009,1010
C. 1008,1009
D. 1008,1008
解析:按照题目可以得到,每进行4轮之后,,这个人的方向会回到X轴正方向,2017/4=54……1,只需要找到右上角那个顶点的规律即可。右上顶点规律:x左边等于1+2a,y坐标等于2a,a等于每4次为一个循环的循环次数。所以(1009,1008)
第 20 题 在1和2015之间 (包括1和2015 在内) 不能被 4,5,6三个数任意一个数整除的数有( C )个。
A 100
B. 1050
C.1075
D.1080
解析:2015/4=503……3,2015/6=335……5,2015/5=403,所以1-2015能被4、6整除的分别有,503+335+403=1241个,但是存在重复(4和6的最小公倍数是12,2015/12=167.92,4和5的最小公倍数是20,2015/20=100.75,5和6的最小公倍数是30,2015/30=67.16,20和30的最小公倍数是60,2015/60=33),所以1241-167-100-67+33=1241-334+33=940个,这是能被4 5 6整除的个数,2015-940=1075个
(容易漏掉20和30的公倍数,导致计算一些重复的数据)
第 21题 地面上有标号为A、B、C的三根柱,在 A柱上放有 10 个直径相同中间有孔的圆盘,从上到下依次编号为 1,2,3...,将A柱上的部分盘子经过 B 柱移入 C柱,也可以在 B 柱上暂存。如果 B 柱上的操作记录为“进、进、出、进、进、出、出、进、进、出、进、出、出”。那么,在 C柱上,从下到上的编号为( D )
A. 243657
B. 241257
C. 243176
D. 243675
解析:在纸上画图罗列过程,根据栈的特性,先进后出,根据A柱原先的编号,以及B柱进、进、出、进、进、出、出、进、进、出、进、出、出可以得到C柱243675
第 22题 有五副不同颜色的手套(共 10 只手套,每副手套左右手各 1只),一次性从中取6只手套,请问恰好配成两副手套的不同取法有( A )种。
A.120
B. 180
C. 150
D.30
解析:先从五副手套中任取二副,有C(5,2) = 10种取法,再从剩下的三副手套中,任选二副手套并各取一只,有C(3,2)*4 = 12种,由分步计数原理可得,恰好能配成两幅手套的不同取法有10*12=120种取法
第23题 由 1,1,2,2,3 这五个数字组成不同的三位数有( A )种。
A. 18
B. 15
C.12
D.24
解析:百位固定1的情况,有7种(1 1 2/3 ; 1 2 1/2/3 ;1 3 1/2),百位固定2的情况,有7种(2 1 1/2/3 ; 2 2 1/3 ;2 3 1/2),百位固定3的情况,有4种(3 1 1/2; 3 2 1/2)
第24题 小明希望选到形如“省A.LLDDD“的车牌号。车牌号在“.”之前的内容固定的5位号码中,前2位必须是大写英文字母,后3位必须是阿拉伯数字 (L代表车牌里的大写字母(有字母排除在外),D表示0至9数字,两个L和三个D之间可能相同也可能不同)。请问总共有 ( )个可供选择的车牌号。
A. 20280
B. 52000
C. 576000
D. 1757600
解析:组合问题,两个L和三个D之间可能相同也可能不同,车牌里的字母一共有24个,I和O不在,24*24*10*10*10=576000种
第 25题 假设有 n根柱子,需要按照以下规则依次放置编号为 1,2,3.…的圆环:每根柱子的底部周定,顶部可以放入圆环每次从柱子顶部放入圆环时,需要保证任何两个相邻圆环的编号之和是一个完全平方数。请计算当有 4 根柱子时,最多可以放置()个圆环
A. 7
B. 9
C. 11
D. 5
解析:完全平方数也就是一个整数的平方
二、阅读程序
第26-30题 组合题
阅读下面的程序,完成第(26) 到第(30) 道小题、每道小题 2 分。
第 26题 判断题:如果 h 数组中的输入有负数,则程序会出错。
A. 正确
B. 错误
第 27题 判断题:程序输出的 ans 小于或等于 n。
A. 正确
B. 错误
第 28题 判断题:将第 13 行“a[i]> = a[j]”改为“a[j]>a[i]”输出结果不会改变。
A. 正确
B. 错误
第 29 题 单选题:若输入的数据为: 10
1 111111111
则程序的输出结果是()
A. 1
B. 2
C. 3
D. 4
第30 题 单选题:若输入的数据为: 10
3 2 5 11 12 7 4 10 15 6
程序的输出结果是 ( )
A. 2
B. 3
C. 4
D. 5
第 31-34 题 组合题
阅读下面的程序,完成第(31)到第(34)道小题。
第 27 题 判断题:当m>0时,输出的值一定小于 2n。
A.正确
B.错误
第 28 题 判断题:执行完第 24 行的 ans++ 时,ans 一定是偶数。
A. 正确
B. 错误
第 29 题 判断题:a[i]和 b[i] 不可能同时大于 0。
A. 正确
B. 错误
第 30题 单选题:若m个x两两不同,且m 个两两不同,则输出的值为
A.2n-2m
B.2n+2
C.2n-2
D.2n
三、程序完善
第 35-39 题 组合题
质因数分解:给定一个正整数 n,输出将 n 质因数分解的结果,结果从小到大输出。例如:当 n = 120时程序应该输出 2 2 2 3 5,表示:120 = 2 × 2 × 2 × 3 × 5。输入保证 2 ≤ n ≤ 10^9。提示:先从小到大枚举变量i,然后用 i 不停试除 n 来寻找所有的质因子。
试补全程序。
第35题 单选题:空缺①处应该填( )
A.1
B.n-1
C.2
D.0
第36题 单选题:空缺②处应该填( )
A.n/i
B.n/(i*i)
C.i*i
D.i*i*i
第37题 单选题:空缺③处应该填( )
A.if(n%i==0)
B.if(i*i<=n)
C.while(n%i==0)
D.while(i*i<=n)
第38题 单选题:空缺④处应该填( )
A.n>1
B.n<=1
C.i<n/i
D.i+i<=n
第39题 单选题:空缺⑤处应该填( )
A.2
B.n/i
C.n
D.i
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)