2023年5月第14届蓝桥杯C++编程青少组(省赛)真题(含答案)_第1页
2023年5月第14届蓝桥杯C++编程青少组(省赛)真题(含答案)_第2页
2023年5月第14届蓝桥杯C++编程青少组(省赛)真题(含答案)_第3页
2023年5月第14届蓝桥杯C++编程青少组(省赛)真题(含答案)_第4页
2023年5月第14届蓝桥杯C++编程青少组(省赛)真题(含答案)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023年5月第14届蓝桥杯C++编程青少组(省赛)真题(含答案)一、单选题。1.题C++中,bool类型的变量占用字节数为()。A.1B.2C.3D.4标准答案:A。2.以下关于C++结构体的说法,正确的是()。A.结构体中只能包含成员变量,不能包含成员函数。B.结构体不能从另一个结构体继承C.结构体里面可以包含静态成员变量D.结构体里面不能包含构造函数标准答案:C。3.设只含根结点的二叉树高度为1,共有62个结点的完全二叉树的高度为()。A.4B.5C.6D.7标准答案:C。4.以下关于数组的说法,不正确的是()。A.数组中所有元素的类型必须都相同B.数组中各元素在内存中是顺序存放的C.数组最后一个元素的索引是数组的长度D.数组名的第一个字符可以是下划线标准答案:C。5.执行以下代码,输出的结果是()。#include<iostream>usingnamespacestd;intf(intk){if(k==1){return3;}return2*f(k-1)+1;}intmain(){intn=6;cout<<f(n);return0;}A.127B.97C.63D.126标准答案:A。二、编程题。6.特殊运算符。时间限制:1000MS。内存限制:65536K8。题目描述:编程实现:特殊运算符。输入描述:输入一个正整数N(100<n<1000)。输出描述:输出一个整数,表示N-(>>>N)的结果。样例输入:257样例输出:232参考程序:#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;cout<<(n-n/10)<<endl;return0;}7.四叶玫瑰数。时间限制:1000MS。内存限制:65536KB。题目描述:编程实现:四叶玫瑰数。四叶玫瑰数是指一个四位数,其各位上的数字的四次方之和等于本身。给定两个正整数N和M,请将N~M(1<=N<=M<=1000000)之间(含N和M)的四叶玫瑰数按从小到大的顺序输出。例如:N=1234,M=2345时,有一个四叶玫瑰数1634,因为1^4+6^4+3^4+4^4=1634,故输出1634。输入描述:第一行输入两个正整数N、M(1<=N<=M<=1000000)。输出描述:输出一行,包含若干个用一个空格隔开的正整数,表示N~M之间的四叶玫瑰数按从小到大的顺序的输出结果。注意:题目数据保证给定的N~M范围内至少有一个四叶玫瑰数。样例输入:12342345样例输出:1634参考程序:#include<bits/stdc++.h>usingnamespacestd;intCalc(intx){intres=0;while(x){intt=x%10;res+=t*t*t*t;x/=10;}returnres;}intmain(){intn,m;cin>>n>>m;n=max(1000,n);m=min(9999,m);for(inti=n;i<=m;++i)if(Calc(i)==i)cout<<i<<endl;return0;}8.质因数的个数。时间限制:1000MS。内存限制:65536KB。编程实现:质因数的个数。提示信息:因数:又称为约数,如果整数a除以整数b(b!=0)的商正好是整数而没有余数,我们就说b是a的因数。质数:又称为素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。2是最小的质数。质因数:如果一个数a的因数b同时也是质数,那么b就是a的一个质因数,例如:8=2x2x2,2就是8的质因数;12=2x2x3,2和3就是12的质因数。题目描述:给定两个正整数N和M(1<=N<=M<=1e7),统计N到M之间(含N和M)每个数所包含的质因数的个数,输出其中最大的个数。例如:当N=6,M=10,6到10之间。6的质因数是2、3,共有2个。7的质因数是7,共有1个。8的质因数是2、2、2,共有3个。9的质因数是3、3,共有2个。10的质因数是2、5,共有2个。6到10之间的数中质因数最多的是8,质因数有3个,故输出3。输入描述:输入两个正整数N和M(1<=N<=M<=1e7),两个正整数之间用一个空格隔开。输出描述:输出一个整数,表示质因数个数中的最大值。样例输入:610样例输出:3参考程序:#include<bits/stdc++.h>usingnamespacestd;constintN=1e7+5;intn,m,ans;vector<int>p;boolvis[N];voidInit(){for(inti=2;i<=m;++i)for(intj=i+i;j<=m;j+=i)vis[j]=true;for(inti=2;i<=m;++i)if(!vis[i])p.push_back(i);}intCalc(intx){intres=0;for(inti:p){if(i>x)break;while(!(x%i)){++res;x/=i;}}returnres;}intmain(){cin>>n>>m;Init();for(inti=n;i<=m;++i){ans=max(ans,Calc(i));cout<<Calc(i)<<endl;}cout<<ans<<endl;return0;}9.最大的矩形纸片。时间限制:1000MS。内存限制:65536KB。题目描述:编程实现:最大的矩形纸片。一张半边参差不齐的网格纸(网格边长均为1),有一边是完整没有破损的。现要从中剪出一片面积最大的矩形纸片。给定网格纸中完整边的长度N(1<=N<=1000000),以及网格中每一列残存部分的高度(1<=高度<=10000),输出能够剪出的最大矩形纸片面积。例如:N=6,每一列残存部分的高度依次为3、2、1、4、5、2,如下图所示:可以发现,沿着红色框可以剪出的矩形纸片面积最大,为8,所以输出8。输入描述:第一行输入一个正整数N(1≤N≤1000000),表示纸片完整边的长度。第二行输入N个正整数(1≤正整数≤10000),表示每列格子残存部分的高度,两个正整数之间用一个空格隔开。输出描述:输出一个正整数,表示能够剪出的最大矩形纸片面积。样例输入:6321452样例输出:8参考程序:#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;constintN=1e6+5;intn,a[N];LLans;intmain(){cin>>n;for(inti=1;i<=n;++i)cin>>a[i];for(inti=1;i<=n;++i)for(intj=i,mn=10000;j<=n;++j){mn=min(mn,a[j]);ans=max(ans,(LL)(j-i+1)*mn);}cout<<ans<<endl;return0;}10.数字游戏。时间限制:1000MS。内存限制:65536KB。题目描述:编程实现:数字游戏。老师给出了一组数,要求小蓝对这组数进行调整,调整的规则如下:(1)第1次,从这组数中选出一个最小的数,把它调整为和第二小的数一样大。(2)第2次,再从这组数中选出一个最大的数,把它调整为和第二大的数一样大。(3)重复执行1、2步骤。(4)当这组数中所包含的不同的数少于3个时,结束调整。现在给定了一组数,请帮小蓝编写程序计算出总共的调整次数,以及调整结束时这组数中的最小数和最大数。输入描述:第一行输入一个正整数N(3≤N≤1000000),表示这组数中数的个数。第二行输入N个正整数(1≤正整数≤1000000),正整数之间用一个空格隔开。输出描述:输出一行,包含三个整数,分别是总的调整次数、调整结束时的最小值和最大值,整数之间用一个空格隔开。样例输入:41342样例输出:223参考程序:#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;constintN=1e6;//l[a]/r[a]:<-/->a的数量。intn,cnt[N+5],l[N+5],r[N+5];//f[i]/g[i]:对去重后的数字段,第i段左/右部分移至该段数字的总步数。LLf[N+5],g[N+5];vector<int>a;intmain(){cin>>n;for(inti=1,x;i<=n;++i){cin>>x;++cnt[x];a.push_back(x);}sort(begin(a),end(a));a.erase(unique(begin(a),end(a)),end(a));if(a.size()<=2){cout<<0<<''<<a[0]<<''<<a[a.size()-1]<<endl;return0;}intm=a.size();for(inti=1;i<=N;++i)l[i]=l[i-1]+cnt[i];for(inti=N;i>=1;--i)r[i]=r[i+1]+cnt[i];for(inti=1;i<m;++i)f[i]=f[i-1]+cnt[a[i-1]];for(inti=1;i<m;++i)f[i]+=f[i-1];for(inti=m-2;i>=0;--i)g[i]=g[i+1]+cnt[a[i+1]];for(inti=m-2;i>=0;--i)g[i]+=g[i+1];for(inti=0;i<m-1;++i){LLt=f[i]-g[i+1]-1;if(t>=0&&t<r[a[i+1]]){cout<<f[i]+2-1<<''<<a[i]<<''<<a[i+1]<<endl;break;}t=g[i+1]-f[i];if(t>=0&&t<l[a[i]]){cout<<g[i+1]*2<<''<<a[i]<<''<<a[i+1]<<endl;break;}}return0;}11.活动人数。时间限制:1000MS。内存限制:65536KB。题目描述:编程实现:活动人数。有一个大型企业集团,由N个部门组成,编号从1到N。这些部门之间的层次关系形成了一个树状结构,一个上级部门可能会有1个或多个直接下级部门,一个下级部门只有一个直接上级部门。本月集团举办了一个大型活动,这次的活动组织方按如下要求安排活动:(1)来的人越多越好。(2)如果一个上级部门参加本次活动,那么他们的直接下级部门就不能参加,而他的间接下集部门可以参加(如下图,如果部门1参加,那么部门2、3不能参加,而部门4、5、6可以参加)。请你帮他们计算一下,如何安排可以使参加活动的人数最多,并输出参加活动的最多人数。例如:当N=6,每个部门编号为1到6,部门上下级关系和部门的人数如下图所示:注意:示例中,部门1是层级最高的部门,没有直接上级,故将其直接上级部门设为0。当安排(1、4、5、6)这4个部门参加活动时,人数最多,为11,所以输出11。输入描述:第一行输入一个正整数N(1≤N≤100000),表示集团所有部门的数量。接下来有N行,每行输入三个非负整数F、S和C,(0≤F≤N,1≤S≤N,F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论