GESP等级考试C++真题解析
文章平均质量分 91
GESP等级考试C++真题解析
信息学奥赛源老师
信息学奥赛教练,15年信奥教学经验,带出多名CSP-J/S第二轮一等奖、NOIP一等奖学生。信息技术学科带头人,《计算机程序设计》、《全国信息学奥林匹克竞赛考试大纲》研究员
展开
-
GESP2023年12月认证C++三级真题解析
在逻辑或运算中,只要有一个操作数为真,结果就为真。三只小猫来分鱼N=3,每次扔掉鱼的数量为i=1,为了每只小猫都可吃到鱼,可令第三只小猫需要拿走3条鱼(拿走1条和2条不满足要求),则此时待分配的有10条鱼。例如:两只小猫来分鱼N=2,每次扔掉鱼的数量为i=1,为了每只小猫都可吃到鱼,可令第二只小猫需要拿走1条鱼,则此时待分配的有3条鱼。小杨的作业只涉及将更大的单位转换为更小的单位,也就是说,小杨的作业只会包含如下题型:米转换为毫米,千米转换为毫米,千米转换为米,克转换为毫克,千克转换为毫克,千克转换为克。原创 2024-06-20 21:18:38 · 1114 阅读 · 0 评论 -
2023年GESP12月认证C++一级真题解析
14、某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。3、假设现在是上午十点,求出N小时(正整数)后是第几天几时,如输入20小时则为第2天6点,如N输入4则为今天14点。13、 下图所示C++代码对大写字母 'A' 到 'Z' 分组,对每个字母输出所属的组号,那么输入 'C' 时将输出的组号是?例如,如果 ,,那么小杨就需要依次报出 、、。9、下面C++代码用于判断一个数是否为质数(素数),在横线处应填入代码是(D )。原创 2024-06-20 20:37:27 · 811 阅读 · 0 评论 -
GESP2024年3月认证C++八级真题解析
例如,1,2,3,1,4,2,3。小A写了一个N×M的矩阵A,我们看不到这个矩阵,但我们可以知道,其中第i行第j列的元素Ai,j是i和j的公倍数(i=1,...,N,j=1,...,M)。对于第二次询问,队列变化情况为:{}→ {1} → {1,2} → {1,2,2} → {1}→ {1,3} → {1,3,1}→ {}→ {3}。求的三角形周长,加上a和b。对于第一次询问,小杨同学会按照1,2,2的顺序放置卡牌,在放置最后一张卡牌时,两张点数为2的卡牌会被收走,因此最后队列中只剩余一张点数为1的卡牌。原创 2024-06-19 14:43:36 · 994 阅读 · 0 评论 -
GESP2024年3月认证C++七级真题解析
【解题思路】按照题目的输入进行连边,此时可以将整张图分为若干个连通块,对于每一个连通块都进行01染色,设颜色为0和1的点的个数分别为x,y,则B类点的数量即可以是x也可以是y,让min_B+=min(x,y),max_B+=max(x,y),最后输出min_B和max_B即可。【解析】exp(x)是ex ,而指数函数增长的速度非常快,当x>0时ex一定大于x,选项A当π<x<2π时,sin(x)<0,选项C,当x=e时,log(x)-x=1-e<0,选项D,当x=0.5时,x*x-x=-0.25。原创 2024-06-19 14:41:24 · 1141 阅读 · 0 评论 -
GESP2024年3月认证C++六级真题解析
【解析】根据哈夫曼编码的构造方式,两个字符的频率差异最大,长度差距也会最大,若它们的编码出现了相同的前缀,说明所有字符的编码都会有同样的非空前缀,此时可以考虑删除这个前缀使得各字符所对应的编码长度更短(这里不考虑前缀为空的情况,不然无论如何都会有前缀了)【解析】在第11行的转移方程中,dp[i-1]代表不取用nums[i]的情况,而nums[i] + dp[i-2] 表示取用nums[i]的情况,且可以发现此时nums[i-1]一定不为和的一部分,故选C。你想留下连续的一段牛棚,并把其他牛棚都卖掉。原创 2024-06-16 16:07:09 · 985 阅读 · 0 评论 -
GESP2024年3月认证C++五级真题解析
【解析】对于判断n是否为素数,如果整数k是n的一个约数,那么n/k也是n的一个约数,k和n/k必然满足,一个小于等于sqrt(n),另一个大于等于sqrt(n),sqrt(n)为根号n。①比较朴素的思路为循环遍历1~n,对于每个i,对其分解质因子,得到最大质因子,将质因子和B作比较,并统计到答案中,该算法循环复杂度为O(n),调用分解质因子的复杂度为O(sqrt(n)),总体复杂度为O(nsqrt(n)),加上需要初始化等常数操作,通过1e6的数据是比较危险的。【解析】分治法是一种很重要的算法。原创 2024-06-16 14:58:48 · 1010 阅读 · 0 评论 -
GESP2024年3月认证C++四级真题解析
for循环中,第一行输出*s+0, 即‘2024’,第二行输出*s+1,即‘024’,向后移一位,与字符串的输出规则一样。题中定义的fin每次读入一个数据,读入规则与cin一样,for循环处一共读入输出两个数据,为50和2024,由于x的数据类型是int,所以接下来读入3存入x,输出x答案为3。3.利用排序算法,从小到大排列,设置变量s,表示当前已经使用的元素下标,第j 天的时候,到数组中从s下标开始寻找,直到找到大于等于j的数组元素,将s更新为该元素的下标,答案加1。【解析】本题属于考察数据大小的知识。原创 2024-06-16 14:30:59 · 1312 阅读 · 0 评论 -
2024年GESP3月认证C++三级真题解析
可以反过来算,相邻两项和是3的倍数的,一共有1+2=3,4+5=9,7+8=15,10+11=21, 13+14=26,16+17=33六项。=0的简写,两个条件同时满足既不是2的倍数也不是3的倍数的时候,该项置为0。(1)小写为str[i] >= 'a' && str[i] <= 'z',其对应的索引值(a=1,b=2,...,z=26),计算时ans += str[i] - 'a' + 1;’1’的ASCII编码是49,’3’的ASCII编码是51,’6’的ASCII编码是54,加起来是154。原创 2024-06-16 12:17:36 · 1135 阅读 · 0 评论 -
GESP2024年3月认证C++二级
因为,十进制是基于10的倍数来构建的,而10是2的倍数,这意味着除了个位以外的任何位上的数字(十位、百位、千位等)乘以其对应的10的幂次,都将产生一个偶数。【解析】cur = 2,masks = 10,前5次循环if条件不满足,第5次循环后cur = 0,masks = 5;B选项为最值函数首先执行内部的max(8, 9),结果是9,然后执行min(9, 10),结果是9。13、给定两个整数n与k,打印出一个栅栏图形,这个栅栏应该分成n段,段与段之间的间隔为+ , 段内的填充为k个-。原创 2024-06-16 12:17:04 · 1295 阅读 · 0 评论 -
2024年GESP3月认证C++一级真题解析
选项B中,3.16是一个浮点数值,但可以隐式转换为整数类型,因为x是一个整型变量,所以这个赋值是合法的。同样地,i%7表示变量i除以7的余数,如果i不能被7整除,即i%7的结果不为0,则条件也为真。【解析】在C++中,3.0和3在值上是相等的,但它们的数据类型不同。【解析】在C++中,printf函数是用于格式化输出的,%d用于指定输出整数,#和&是普通字符,会直接输出。【解析】printf函数中,格式化字符串中的格式控制符%d用于表示将要插入的整数,而实际插入的整数为a+1,即2。原创 2024-06-16 11:10:40 · 1527 阅读 · 0 评论 -
2023年GESP9月认证C++三级真题解析
例如,p=2时,array[2]=2,条件成立,进入第2重循环,n的范围是2到9,注意步长是2,对每个数组元素重新赋值,数组重新变为0 1 1 3 2 5 3 7 4 9。【解析】本题属于考察C ++语言的运算知识,程序的目的是实现a和b的数据交换,用a的低8位保留b的值,原来的数值保存在a的高八位,因此b=a>>8即得到a原来的值。【解析】本题属于考察C ++语言的表达式知识,注意是找不能正确判断的条件,B选项中,例如a=4,b=5,(a>>1)是等于(b>>1)的,因此选B。第2天,i=2,依次类推。原创 2024-03-21 17:42:40 · 1041 阅读 · 0 评论 -
2023年3月GESP C++ 一级真题解析
b一开始是20,经过操作,b等于a除以100,也就是把a的后两位删掉,剩下的结果是10,那就说明5行代码处的a应该是1020,先让a乘100,由10变成1000,再加b,变为1020,所以本题正确答案为D。否则t>=1,(4k+4)/4*4 <= (a+3) /4*4 <= (4k+6)/4*4,即(4k+4) <= (a+3) /4*4 <= (4k+4),结果为4k+4,大于等于a且是4的倍数的整数中最小的,满足题意;选项B等价于c=c+(a+b),将a和b的值相加,再加上c的值之后,赋给c;原创 2024-03-21 17:06:58 · 1054 阅读 · 0 评论 -
2023年6月GESP C++ 三级真题解析
【解析】本题属于考察计算机基础知识中的数组和位运算相关概念,结果输出31的二进制位是11111,而数组中的5个数的二进制分别是1,、10、,100、,1000和10000,所以选项A、,C、,D都会输出31,只有B选项会输出0,所以本题正确答案为B。【解析】本题属于考察计算机基础知识中的位运算相关概念,a&一个数得到的必然是小于等于a的数,同时题目要求是4的倍数,也就是最后两位要等于0,&(~3)正好是除了最后两位是0,其余全是1,满足要求,所以本题正确答案为A。,可见所以它们不相等,所以本题错误。原创 2024-03-21 17:35:49 · 643 阅读 · 0 评论 -
2023年GESP9月认证C++一级真题解析
比较运算符高于逻辑运算符,例如A选项,先计算x>y和x>z,x>y结果0,x>z结果是0,0||0的结果是0,因此A的表达式值为0。【解析】本题考察C++字符知识,字符相加是根据对应ASCII码值相加,‘1’的ASCII值是49,‘2’的ASCII值是50,输出是49+49对应的字符,不是50。【解析】本题考察C++循环知识,看for里面的条件,i初始值是0,每次增加2,i分别是0,2,4,6,8,10,到10退出循环。【解析】本题考察for循环结构,循环执行了i=1,i=3,共2次,注意i+=2;原创 2024-03-21 17:39:46 · 928 阅读 · 0 评论 -
2023年3月GESP C++ 二级真题解析
B选项会先判断a变量和b变量是否相等(若a和b相等,表达式的值为1,若a和b不相等,表达式的值为0),然后再判断表达式(a==b)的值是否为0与c变量相等。D选项表示表达式(a==0)减表达式(b==0)的计算结果是否为0,表示a和b同时为0或a和b同时都不为0。【解析】可以将选项带入排除A,B,C选项,需要注意B选项中5没有单引号,所以表示的不是字符’5’,D选项中ch虽然是字符类型,但计算时会使用对应的ASCII码%2,字符’1’到字符’9’之间,所有ASCII码中有5个是奇数,所以本题正确答案为D。原创 2024-03-21 17:27:28 · 1141 阅读 · 0 评论 -
2023年GESP9月认证C++二级真题解析
【解析】本题属于考察程序填空,根据题意这是一道双重循环的题,题目的核心是考核运行次数,注意i的循环范围,j的循环范围,j的每次累加的是2。【解析】本题属于考察程序填空,根据题意,判断质数,质数的特点是只能被1和它本身整除,如果被2---N-1之间的数字整除,就不是质数,这样的数字找到1个,就不需要再循环判断了,因此填break,A。根据if条件,1%3==1,!【解析】本题属于考察程序填空,根据题意,从大到小输出N的所有因子,判断范围是[N,1],观察选项,C选项符合,D选项错误的地方是i>1,不包括1。原创 2024-03-21 17:41:07 · 681 阅读 · 0 评论 -
2023年GESP9月认证C++四级真题解析
数组是long long类型,每间隔一下数字就间隔8个字节,假设三维数组用长宽高来描述,array[0][0][0]到array[0][5][5]有36个元素,array[1][2][3]包含36+12+4=52个元素;对于任意⼀个L位K进制数,假设其最右边的数位为第 0位,最左边的数位为第 L - 1 位,我们只需要将其第i位的数码乘以权值 Ki,再将每位的结果相加,即可得到原K进制数对应的⼗进制数。P指针指向的是a[2],将a[1]的值赋值给p指向的变量a[2],数组中a[1]将等于a[2]。原创 2024-03-21 17:43:56 · 670 阅读 · 0 评论 -
2023年GESP12月认证C++五级真题解析
例如,如果a=4,那么4是最⼩的幸运数,而1不是,但我们可以连续对1做3次+1操作,使其变为4,所以我们可以说,1幸运化后的结果是 4。【题目大意】给一个完全平方数的标准,推导出哪些是超级幸运数,然后判断N个数字中,哪些是超级幸运数,是的输出“lucky”,不是的输出离该数字最近的比它大的数字。前一个数字,下标是j的数字是偶数,后面的数字下标是j+1的是奇数,按照要求,偶数在奇数的后面,要交换。A函数时间复杂度是O(n/2),B函数算法是O(sqrt(n)),大部分情况后者是优的,值更小。原创 2024-03-21 16:39:16 · 457 阅读 · 0 评论 -
2023年6月GESP C++ 四级真题解析
一个正整数,其偶数位不变(个位为第1位,十位为第2位,以此类推),奇数位做如下变换:将数字乘以7,如果不大于9则作为变换结果,否则把结果的各位数相加,如果结果不大于9则作为变换结果,否则(结果仍大于9)继续把各位数相加,直到结果不大于9,作为变换结果。下面关于排序稳定性的描述,正确的是( )。【解析】本题属于考察递推相关概念,递推是按照一定的规律来计算序列中的每个项,本题中规律是从第三个数开始,每个数是前面两项之和,且我们按照从小到大的顺序依次计算数列中的每个项,这和递归的编程思想一致,所以本题正确。原创 2024-03-21 17:37:22 · 731 阅读 · 0 评论 -
2023年6月GESP C++ 二级真题解析
D选项错误在于:两个double类型变量相除时,如果除数的值为0.0,得到的结果是特殊的double类型值INF(被除数为正数时,正无穷)、-INF(被除数为负数时,负无穷)或NaN(被除数为0时,无意义),但是程序不会崩溃;字符变量a的值是'3',相当于'0'加3,字符变量b的值是'6',相当于'0'加6,因此a+b等于'0'+3+'0'+6,再减掉'0'的结果就是字符'9';题目中a是char类型,2是int类型,那么a+2的结果是int类型,输出的结果是整数69,所以本题正确答案为D。原创 2024-03-21 17:34:09 · 1143 阅读 · 0 评论 -
2023年6月GESP C++ 一级真题解析
A选项错误在于,除法运算优先级高于加法运算,两个整数7和2相除的结果是整数3,再加上实数0.0,得到的结果是3.0,不满足要求,所以本题正确答案为A。C选项错误在于,^符号在一些其他语言中表示乘方运算,但在是C++中表示的“异或运算符”,会将符号两边的值按二进制位进行异或运算,不满足要求,所以本题正确答案为C。例如,4是偶数,被对4除取余,余数是0。(a || b)为真,则(a||b)结果为0,若a和b有任意一个不为0,(a||b)的值都为1,所以当a等于0且b等于0时,(a || b)的结果才为0,!原创 2024-03-21 17:30:47 · 897 阅读 · 0 评论 -
GESP2024年12月认证C++八级真题解析
【解析】代码中a,b,h的取值范围均为[1,10],要(a+b)*h=20,那么可能的h有1,2,4,5,10,h为1时,(a+b)=20,有1种方法,h为2时,(a+b)=10,有9种方案,依次计算出h为4,5,10时,(a+b)的方案数依次为4,3,1,总方案数为1+9+4+3+1=18,选B。【解析】结构体edge里的next指向的是下一条边,Node里的first指向的是每个点的第一条边,所以0号点指向1号点,1号点指向2,3号点,2号点指向3号点,3号点指向0号点,选B。原创 2024-03-21 16:12:34 · 845 阅读 · 1 评论 -
2023年GESP12月认证C++六级真题解析
针对每次查询,先看一下m个人中,层数最低的能不能主持会议,不能就从上级中选取,结果最小就是0号来主持。其中 ,第i个通道可以让你前进ai关,也就是说 ,如果你现在在第x关 ,那么选择第i个通道后,你将直接来到第x+ai关(特别地,如果x + ai≥N,那么你就通关了)。如果是多节点,则左节点的值⼩于⽗节点的值,右节点的值⼤于⽗节点的值,由此推理,右节点树的值都⼤于根节点的值,左节点树的值都⼩于根节点的值。【题目大意】从0关出发,每次都有m种选择,选的的第i个关卡,到达的下一个关卡是0+ mi。原创 2024-03-21 16:33:26 · 868 阅读 · 0 评论 -
2023年GESP12月认证C++七级真题解析
【解析】代码采用链地址法来存储哈希,即将所有哈希地址相同的记录都链接在同一链表中,哈希方式为%7,我们依次对每个元素进行判断:44,36,23,35,52,73,90,58,每个数字的哈希地址分别是2,1,2,0,3,3,6,2,即哈希值为0~6的元素个数分别有1,1,3,2,0,0,1,对于之前的8个数字,它们查找成功的次数分别是1,1,2,1,1,2,1,3,总次数为12次,平均次数=12/8=1.5次,答案为C。+a[j]的和,且与k无关,可以单独拎出来,所以转移方程为。原创 2024-03-21 16:26:58 · 322 阅读 · 1 评论