版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023年5月第14届蓝桥杯C++编程青少组(国赛)真题(含答案)一、单选题。1.以下选项中,没有利用“比较”操作的算法是()。A.选择排序B.冒泡排序C.插入排序D.桶排序标准答案:D。2.假设入栈顺序为a、b、c、d、e,则出栈序列不可能是()。A.a、b、d、c、e。B.b、a、d、c、e。C.d、c、a、b、e。D.c、b、a、d、e。标准答案:C。3.执行以下代码,输出的结果是()。#include<iostream>usingnamespacestd;intf(intk){if(k<=2)return1;return2*f(k-2)+f(k-1);}intmain(){intn=7;cout<<f(n);return0;}A.21B.41C.43D.45标准答案:D。4.已定义字符串strings="LetltBe",下列哪个选项可以获得字符串的长度()。A.s.size()B.len(s)C.sizeof(s)D.strlen(s)标准答案:A。5.以下关于C++类的说法,正确的是()。A.析构函数和构造函数一样可以进行重载B.析构函数里不能使用return语句C.构造函数不需要返回值时,需要定义为返回void类型。D.如果自定义构造函数的参数都是默认参数,则不能再定义一个无参数的构造函数。标准答案:B。二、编程题。6.八进制回文平方数。时间限制:1000MS。内存限制:65536KB。提示:八进制数:指逢8进位的一种进位计数制,以0、1、2、3、4、5、6、7共八个数码表示。例如:十进制数8等于八进制数10,十进制数64等于八进制数100,以此类推。回文数:反向排列与原来一样的数。例如,12321是回文数,1231不是回文数。平方数:可以写成某个整数的平方的数。例如,9=3^2,9是一个平方数。题目描述:给定一个十进制正整数N(1≤N≤109),请从小到大输出1~N之间(含1和N)所有满足以下要求的数:(1)这个数转换为八进制后是一个回文数。(2)这个数是一个平方数。例如:N=20,在1~20之间满足要求的数有1、4、9,因为有:1转换为八进制为1,是一个回文数;且1=1^2,是一个平方数。4转换为八进制为4,是一个回文数;且4=2^2,是一个平方数。9转换为八进制为11,是一个回文数;且9=3^2,是一个平方数。故输出149。输入描述:输入一个十进制正整数N(1≤N≤109)。输出描述:输出一行,包含若干个十进制正整数,表示满足题目要求的数。结果从小到大输出,两个正整数之间用一个空格隔开。样例输入:50样例输出:149参考程序:#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,x;cin>>n;strings1,s2;for(inti=1,j;i<=n;i++){x=sqrt(i);if(x*x!=i)continue;j=i;s1="";while(j){s1=char(j%8+'0')+s1;j/=8;}s2=s1;reverse(s1.begin(),s1.end());if(s1==s2)cout<<i<<"";}return0;}7.主要成分。时间限制:1000MS。内存限制:65536KB。背景信息:金星是离地球最近的行星,人类发射的“金星快车”探测器的主要任务是对金星大气层进行精确的探测,分析其化学成分。题目描述:从金星探测器传回来一组测量数据,这是一个长度为N(1≤N≤1000000)的整数数列,数列中的每个整数代表某一种化学成分(相同的整数代表相同的化学成分)。主要成分:指在包含的所有化学成分中比例超过一半(N÷2的结果向下取整)的成分。现在要判断其是否有主要成分;如果有,其主要成分是哪一种?例如:当N=7,整数数列为1232212,其中成分2有4个,超过了7的一半(7的一半向下取整为3),所以主要成分是2。当N=6,整数数列为110231311102,其中的每一种成分都只有2个,未超过6的一半(6的一半为3),所以没有主要成分。输入描述:第一行输入一个正整数N(1≤N≤1000000),表示数列长度。第二行输入N个整数(1≤整数≤2×109),每个整数表示一种化学成分,两个整数之间用一个空格隔开。输出描述:输出一行,如果存在主要成分,则输出代表主要成分的整数,否则,输出No。样例输入:71232212样例输出:2参考程序:#include<bits/stdc++.h>usingnamespacestd;intmain(){map<int,int>m;intn,max_n=0,max_x=0;cin>>n;for(inti=1,x;i<=n;i++){cin>>x;++m[x];}for(autoit=m.begin();it!=m.end();it++){if(it->second>max_n){max_n=it->second;max_x=it->first;}}if(max_n>n/2)cout<<max_x;elsecout<<"No";return0;}8.简单算术题。时间限制:1000MS。内存限制:65536KB。题目描述:给定一道没有括号的四则混合运算算术题(可能包含多余的空格),请编程计算出结果。运算规则如下:(1)既有乘、除法又有加、减法的,要先算乘除法,再算加减法。(2)同级运算时,要从左往右按顺序计算。(3)所有除法运算的结果都只保留整数部分(直接舍弃小数部分)。例如:当算术题为2+3*4-10/6+1/2*4时,优先计算乘除法,有3*4=12,10/6=1,1/2*4=0;然后再计算加减法,2+3*4-10/6+1/2*4=2+12-1+0=13,故输出13。输入描述:输入一个字符串,表示算术题,5≤字符串长度≤100000,字符串中只包含数字字符以及“+”、“-”、“*”、“/”运算符,不含括号,可能包含空格。算式中的运算数范围:1≤运算数≤200。输出描述:输出一个整数,表示算术题的计算结果。题目数据保证算式的每一步运算的结果都在-2×109~2×109之间。样例输入:2+3*4-10/6+1/2*4样例输出:13参考程序:#include<bits/stdc++.h>usingnamespacestd;strings;stack<int>st_n;stack<char>st_c;intmain(){cin>>s;intls=s.size();for(inti=0,t=0;i<=ls;i++){if(isdigit(s[i])){t=t*10+s[i]-'0';}else{if(!st_c.empty()&&st_c.top()=='*'){t=st_n.top()*t;st_n.pop();st_c.pop();}elseif(!st_c.empty()&&st_c.top()=='/'){t=st_n.top()/t;st_n.pop();st_c.pop();}st_n.push(t);t=0;if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')st_c.push(s[i]);}}inta,b;while(!st_c.empty()){if(st_c.top()=='+'){a=st_n.top();st_n.pop();b=st_n.top();st_n.pop();st_n.push(a+b);}else{a=st_n.top();st_n.pop();b=st_n.top();st_n.pop();st_n.push(b-a);}st_c.pop();}cout<<st_n.top();return0;}9.数独填数。时间限制:1000MS。内存限制:65536KB。数独是源自18世纪瑞士的一种数学游戏。玩家需要根据9×9网格上的已知数字,将剩余的所有空格填上数字,使得9×9网格上每一行、每一列及每一个3×3方块(粗线)内的数字均包含1~9,并且数字不重复。例1:下图(左)是未完成的数独,下图(右)是完成后的结果。这个数独可以使用如下9×9的字符方阵表示(空格用“.”表示):参考程序:#include<bits/stdc++.h>usingnamespacestd;charg[12][12];booldfs(intx,inty){if(x==9&&y==9)returntrue;if(y==9)returndfs(x+1,0);if(g[x][y]!='.')returndfs(x,y+1);boolv[12];memset(v,false,sizeof(v));for(inti=0;i<9;i++){if(g[x][i]!='.')v[g[x][i]-'0']=true;if(g[i][y]!='.')v[g[i][y]-'0']=true;}intxx=x/3*3,yy=y/3*3;for(inti=xx;i<=xx+2;i++)for(intj=yy;j<=yy+2;j++)if(g[i][j]!='.')v[g[i][j]-'0']=true;for(inti=1;i<=9;i++){if(!v[i]){g[x][y]=char(i+'0');if(dfs(x,y+1))returntrue;g[x][y]='.';}}returnfalse;}intmain(){for(inti=0;i<9;i++)fgets(g[i],12,stdin);dfs(0,0);for(inti=0;i<9;i++)cout<<g[i];return0;}10.数学实验。时间限制:1000MS。内存限制:262144KB。题目描述:老师在黑板上写出了一个正整数数列,让所有同学都来做一个数学实验,要求如下:(1)这组数总共不超过500000个,每个数的大小范围在1~80之间。(2)要从这组数中找出两个相邻且相同的数,删掉其中一个数,剩下的一个数加1(例如:两个相邻的6,变成一个7)。(3)重复执行第2步。(4)当操作无法继续进行时,实验结束,此时,实验结果就是这组数里面最大的数。注意:不同的实验方案得到的最大数不同。现在给定了一个正整数数列,请你编写程序计算出能够得到的实验结果最大是多少。例如:当N=6,这个正整数数列是1、2、2、2、3、4时,得到最大数的方法如下:先将后面两个2变成一个3,然后3和3变成4,最后4和4变成5。可以证明,没有其它更好的方案,故输出5。输入描述:第一行输入一个正整数N(1≤N≤500000)。第二行输入N个正整数(1≤正整数≤80),相邻两个数之间用一个空格隔开。输出描述:输出一个正整数,表示实验结束后能够得到的最大的实验结果。样例输入:6122234样例输出:5参考程序:#include<bits/stdc++.h>usingnamespacestd;constintN=500005;intn,a;intf[102][N];//状态数组f[i][j]=pos第j个位置生成的i对应的下一次相同的i的位置为pos。//状态转移方程f[i][j]=f[i-1][f[i-1][j]]。intans=-0x3f;intmain(){scanf("%d",&n);for(inti=1;i<=n;++i){scanf("%d",&a);f[a][i]=i+1;//初始化f[a][i]储存以i为下标的数据a的下一次调整位置。}for(inti=2;i<=99;++i){//从第二个数据开始从左向右更新状态。for(intj=1;j<=n;++j){//枚举n个下标位置。if(!f[i][j])//位置点j不存在i这个数据可以通过调整获得。f[i][j]=f[i-1][f[i-1][j]];//i这个数据可以通过i-1获得,i的下标在f[i-1][j]中。if(f[i][j])ans=i;//更新最大的实验结果。}}printf("%d",ans);return0;}11.月球疏散行动。时间限制:1000MS。内存限制:65536KB。题目描述:为了避免太阳爆发引起的灾难,人类决定给地球装上发动机,最终逃离太阳系。原计划要带着月球一起走,结果月球行星发动机发生灾难性故障,必须炸毁月球。为此,在月球上的工作人员都要疏散回地球。月球基地有一艘太空穿梭机可以用来疏散工作人员。但是人们分散在各处,必须前往基地集合,他们到达基地的时间不等。穿梭机可以将抵达基地等待登机的工作人员先送回地球,然后再返回基地疏散下一批工作人员。总共有N名工作人员需要疏散,太空穿梭机从月球到地球往返一次花时间M小时,第i个人抵达基地等待登机的时刻为Ti。指挥官希望所有工作人员在基地等待的时间总和最小,而且他可以任意安排穿梭机的起飞时间,假定穿梭机足够大,可以装下所有工作人员,在不计登机和下机时间等因素的情况下,最小的等候时间总和是多少?例如:N=5,M=4,1号~5号工作人员到达基地的时刻依次为11、3、3、5、10,穿梭机可以在3时出发,先送2号、3号工作人员去地球,然后于7时返回月球基地。此时,4号工作人员已于5时到达基地,等候了2小时。这时让穿梭机马上送走他,然后于11时从地球返回基地。此时,5号工作人员已于10时到达基地,等候了1小时。而1号工作人员刚好于11时到达基地,等候0小时。穿梭机于11时将两人送走,即完成全部疏散任务。总的等候时间=4号工作人员等候时间+5号工作人员等候时间=2+1=3小时。无法再找到有更小等候时间总和的方案。输入描述:第一行输入两个正整数N(1≤N≤500),M(1≤M≤100),以一个空格隔开,分别表示工作人员人数和穿梭机的往返时间。第二行输入N个正整数,依次表示某个工作人员到达基地等候登机的时刻Ti(1≤Ti≤4000000),相邻两数之间用一个空格隔开。输出描述:输出一个整数,表示所有工作人员等候时间之和的最小值(单位:小时)。样例输入:541133510样例输出:3参考程序:#include<iostream>usingnamespacestd;constintN=4e6+105;intcnt[N],sum[N],f[N];intmain(){intn,m,maxn=-1,t;cin>>n>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福建福州三中晋安校区招聘编外英语教师2人备考题库含答案详解ab卷
- 2026黑龙江牡丹江宁安市普爱医院招聘4人备考题库(含答案详解)
- 2025吉林省吉林大学材料科学与工程学院郎兴友教授团队博士后招聘1人备考题库附参考答案详解(典型题)
- 2026年4月安徽芜湖高新区(弋江区)国有企业人员招聘14人备考题库附答案详解(基础题)
- 2026年春季新疆塔城地区事业单位急需紧缺人才引进50人备考题库带答案详解(黄金题型)
- 2026广东江门开平市侨城产业投资集团有限公司招聘备考题库附答案详解(完整版)
- 2026广东警官学院招聘事业单位人员5人备考题库附答案详解(典型题)
- 2026贵州贵阳观山湖区远大小学教师招聘备考题库含答案详解(培优)
- 2026洞头海霞青年营度假酒店招聘5人备考题库(浙江)及答案详解(全优)
- 2026云南自由贸易试验区经投政务服务有限公司综合服务岗见习生招聘备考题库附参考答案详解(巩固)
- 2026希尔顿酒店集团(中国)招聘面试题及答案
- 外贸企业培训课件
- 中央国家核应急响应技术支持中心招聘笔试历年参考题库附带答案详解
- 2026中国REITS指数之不动产资本化率调研报告(第六期)
- 上海市徐汇区2026届高三一模生物试卷(含答案)
- 肾衰竭中医辨证施治方案
- 110接警员培训课件
- 攀登计划课件
- 四川综合评标专家库试题及答案
- 2025年机场运行与管理面试题库及答案
- GB/T 3934-2025普通螺纹量规技术条件
评论
0/150
提交评论