第十一届蓝桥杯真题及答案.docx
- 文档编号:16791343
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:15
- 大小:122.53KB
第十一届蓝桥杯真题及答案.docx
《第十一届蓝桥杯真题及答案.docx》由会员分享,可在线阅读,更多相关《第十一届蓝桥杯真题及答案.docx(15页珍藏版)》请在冰点文库上搜索。
第十一届蓝桥杯真题及答案
第十一届蓝桥杯C++省赛B组真题和题解
试题A:
门牌制作
题目
【问题描述】小蓝要为一条街的住户制作门牌号。
这条街一共有2020位住户,门牌号从1到2020编号。
小蓝制作门牌的方法是先制作0到9这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌1017需要依次粘贴字符1、0、1、7,即需要1个字符0,2个字符1,1个字符7。
请问要制作所有的1到2020号门牌,总共需要多少个字符2?
【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
题解
答案:
624
#include
#include
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
constintINF=1e9;
intcnt;
voidcal(intx){
while(x){
if(x%10==2)cnt++;
x/=10;
}
}
intmain(){
for(inti=1;i<=2020;i++){
cal(i);
}
cout< return0; } 试题B: 既约分数 题目 【问题描述】如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数。 例如,3/4,5/2,1/8,7/1都是既约分数。 请问,有多少个既约分数,分子和分母都是1到2020之间的整数(包括1和2020)? 【答案提交】这是一道结果填空题,你只需要算出结果后提交即可。 本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 题解 答案: 2481215 注: gcd()为求最大公约数函数 #include #include #include #include #include #include #include #include #include usingnamespacestd; constintINF=1e9; constintMAX=2020; intx,y; intgcd(inta,intb){ return! b? a: gcd(b,a%b); } intmain(){ intcnt=0; for(inti=1;i<=MAX;i++){ for(intj=1;j<=MAX;j++){ if(gcd(i,j)==1){ cnt++; } } } cout< return0; } 试题C: 蛇形填数 题目 【问题描述】 如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。 容易看出矩阵第二行第二列中的数是5。 请你计算矩阵中第20行第20列的数是多少? 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。 本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 题解 找规律题 答案: 761 #include #include #include #include #include #include #include #include #include usingnamespacestd; constintINF=1e9; intx; intcal(intn){ return2*n*n-2*n+1; } intmain(){ while(cin>>x){ cout< } return0; } 试题D: 跑步锻炼 题目 【问题描述】小蓝每天都锻炼身体。 正常情况下,小蓝每天跑1千米。 如果某天是周一或者月初(1日),为了激励自己,小蓝要跑2千米。 如果同时是周一或月初,小蓝也是跑2千米。 小蓝跑步已经坚持了很长时间,从2000年1月1日周六(含)到2020年10月1日周四(含)。 请问这段时间小蓝总共跑步多少千米? 【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。 本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 题解 答案: 8879 可以用excel做 额外多跑1km的天数: 1299 7580+1299=8879天 试题F: 成绩统计 题目 【问题描述】 小蓝给学生们组织了一场考试,卷面总分为100分,每个学生的得分都是一个0到100的整数。 如果得分至少是60分,则称为及格。 如果得分至少为85分,则称为优秀。 请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。 【输入格式】 输入的第一行包含一个整数n,表示考试人数。 接下来n行,每行包含一个0至100的整数,表示一个学生的得分。 【输出格式】 输出两行,每行一个百分数,分别表示及格率和优秀率。 百分号前的部分四舍五入保留整数。 【样例输入】 780925674881000 【样例输出】 71% 43% 【评测用例规模与约定】 对于50%的评测用例,1<=n<=100。 对于所有评测用例,1<=n<=10000。 题解 使用round()完成四舍五入操作 #include #include #include #include #include #include #include #include #include usingnamespacestd; constintINF=1e9; intn; intcnt1=0; intcnt2=0; intmain(){ scanf("%d",&n); intN=n; intx; while(N--){ cin>>x; if(x>=60)cnt1++; if(x>=85)cnt2++; } cout< cout< return0; } 试题G: 回文日期 题目 时间限制: 1.0s 内存限制: 256.0MB 本题总分: 20分 【问题描述】 2020年春节期间,有一个特殊的日期引起了大家的注意: 2020年2月2日。 因为如果将这个日期按“yyyymmdd”的格式写成一个8位数是20200202,恰好是一个回文数。 我们称这样的日期是回文日期。 有人表示20200202是“千年一遇”的特殊日子。 对此小明很不认同,因为不到2年之后就是下一个回文日期: 20211202即2021年12月2日。 也有人表示20200202并不仅仅是一个回文日期,还是一个ABABBABA型的回文日期。 对此小明也不认同,因为大约100年后就能遇到下一个ABABBABA型的回文日期: 21211212即2121年12月12日。 算不上“千年一遇”,顶多算“千年两遇”。 给定一个8位数的日期,请你计算该日期之后下一个回文日期和下一个ABABBABA型的回文日期各是哪一天。 【输入格式】 输入包含一个八位整数N,表示日期。 【输出格式】 输出两行,每行1个八位数。 第一行表示下一个回文日期,第二行表示下一个ABABBABA型的回文日期。 【样例输入】 20200202 【样例输出】 20211202 21211212 【评测用例规模与约定】 对于所有评测用例,10000101<=N<=89991231,保证N是一个合法日期的8位数表示。 题解 注意: 从后一天开始判断 日期的限制;平年闰年的判定。 #include #include #include #include #include #include #include #include #include usingnamespacestd; constintINF=1e9; constintmaxn=8; intx; intstr[maxn]; intcnt; //闰年: 能被4整除但不能被100整除,或能被400整除的 intleap_year[12]={31,29,31,30,31,30,31,31,30,31,30,31}; intnonleap_year[12]={31,28,31,30,31,30,31,31,30,31,30,31}; voidconvert(intx){ cnt=0; while(x){ str[7-cnt++]=x%10; x/=10; } } booljg_leap_year(inty){ returny%4==0&&y%100! =0||y%400==0; } intnext_day(intx){ inty=x/10000;//取前四位 intm=x%10000/100;//取最后四位的前两位 intd=x%100;//取最后两位 if(d++==(jg_leap_year(y)? leap_year[m-1]: nonleap_year[m-1])){ d=1; if(m++==12){ y++; m=1; } } returny*10000+m*100+d; } //判断是否为回文 booljg1(intx){ convert(x); for(inti=0;i<=3;i++){ if(str[i]! =str[7-i])returnfalse; } returntrue; } //判断是否为ABABBABA型回文 booljg2(intx){ //首先判断是否为回文 if(jg1(x)==false)returnfalse; return(str[0]! =str[1]&&str[0]==str[2]&&str[1]==str[3]); } intmain(){ cin>>x; inty1=x; while(y1=next_day(y1)){ if(jg1(y1)){ cout< break; } } inty2=x; while(y2=next_day(y2)){ if(jg2(y2)){ cout< break; } } return0; } 试题H: 子串分值和 题目 时间限制: 1.0s 内存限制: 256.0MB 本题总分: 20分 题解 #include #include #include #include #include #include #include #include #include usingnamespacestd; constintINF=1e9; strings; intans; intcal(strings){ set for(inti=0;i st.insert(s[i]); } returnst.size(); } intmain(){ cin>>s; for(inti=0;i for(intj=i;j stringss=s.substr(i,j-i+1); ans+=cal(ss); } } cout< return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十一 届蓝桥杯真题 答案
![提示](https://static.bingdoc.com/images/bang_tan.gif)