2020年第11届蓝桥杯C/C++B组 第二轮省赛
# JJU-干干
试题A :门牌制作
【问题描述】
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个字符 0, 2 个字符 1, 1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码:
#include <stdio.h>
#include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) {
int i;
int temp;
int count=0;
for(i=1;i<=2020;i++){
temp = i;
while(temp!=0){
if(temp%10==2){
count++;
}
temp = temp/10;
}
}
printf("%d",count);
return 0;
}
运行结果:

试题B :既约分数
【问题描述】
如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数。例如,3/4 , 5/2 , 1/8 , 7/1都是既约分数。请问,有多少个既约分数,分子和分母都是1 到2020 之间的整数(包括1和2020)?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码:
#include <stdio.h>
#include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ // 辗转相除法求最大公约数
int gcd(int a, int b){
int t;
while(b!=0){
t = a%b;
a = b;
b = t;
}
return a;
} int main(int argc, char *argv[]) {
int i,j;
int count=0;
for(i=1;i<=2020;i++){
for(j=1;j<=2020;j++){
if(gcd(i,j)==1){
count++;
}
}
}
printf("%d",count);
return 0;
}
运行结果:

试题C 蛇形填数
【问题描述】
如下图所示,小明用从1 开始的正整数“蛇形”填充无限大的矩阵。
 
容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20 行第20 列的数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

代码:
#include <stdio.h>
#include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ /*
将蛇形轨迹拉直:即计算第i斜行的长度 ,而我们所求的数是斜行的中间数,其=斜行末尾数-(第i斜行/2)
*/ int main(int argc, char *argv[]) {
int i,j;
int a[10000];
int num=0;
int count=0;
for(i=1;i<=40;i++){
for(j=1;j<=i;j++){
num++;
}
if(i%2!=0){
printf("%d ",num-(i/2));
count++;
a[count] = num-(i/2);
}
}
printf("\n%d",a[20]);
return 0;
}
运行结果:

 试题D :跑步训练
【问题描述】
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码:
#include <stdio.h>
#include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ // 是否为闰年
int leap_year(int y){
if((y%4==0&&y%100!=0)||y%400==0){
return 1;
}else{
return 0;
}
} int main(int argc, char *argv[]) {
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d;
int w=6; // 起始天2000/1/1是星期六,所以初始为6
int mileage=0; // 里程
for(y=2000;y<=2020;y++){
for(m=1;m<=12;m++){
for(d=1;d<=day[m]+((m==2)?leap_year(y):0);d++,w=w%7+1){
mileage++;
if(d==1||w==1){ // 1日/周一多跑一公里
mileage++;
}
if(y==2020&&m==10&&d==1){
printf("%d",mileage) ;
}
} }
}
return 0;
}
运行结果:

试题F :成绩统计
【问题描述】
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。
【输入格式】
输入的第一行包含一个整数 n,表示考试人数。接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
【输出格式】
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分四舍五入保留整数。
【样例输入】
7
80
92
56
74
88
100
0
【样例输出】
71%
43%
【评测用例规模与约定】
对于50% 的评测用例, 1 ≤ n ≤ 100。
对于所有评测用例,1 ≤ n ≤10000。
代码:
#include <stdio.h>
#include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) {
int n;
int a[10000];
int i;
int pass_count=0;
int good_count=0;
int temp;
int pass_rate;
int good_rate;
scanf("%d",&n) ;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
if(a[i]>=60){
pass_count++;
}
if(a[i]>=85){
good_count++;
}
}
temp = pass_count*100%n;
if(temp*2>=n){ // 及格率四舍五入
pass_rate = pass_count*100/n+1;
}else{
pass_rate = pass_count*100/n;
}
temp = good_count*100%n;
if(temp*2>=n){ // 优秀率四舍五入
good_rate = good_count*100/n+1;
}else{
good_rate = good_count*100/n;
}
printf("%d%c\n",pass_rate,'%');
printf("%d%c",good_rate,'%');
return 0;
}
运行结果:

试题G :回文日期
【问题描述】
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 <stdio.h>
#include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ // 回文日期
int back_date(int n){
int inverse_before4; // 逆序日期的前四位
inverse_before4 = n%10*1000+n/10%10*100+n/100%10*10+n/1000;
return n*10000 + inverse_before4; // 形成回文日期
}
// AB型回文日期
int ab_back_date(int n){
int ab_inverse_before2; // 逆序日期的前两位
ab_inverse_before2 = n%10*10+n/10;
return n*1010000+ab_inverse_before2*101; // 形成AB型回文日期
} int main(int argc, char *argv[]) {
int n;
int backDate;
int abBackDate;
scanf("%d",&n);
if(back_date(n/10000)>=n){
backDate = back_date(n/10000+1); // 大于等于本身,则年份+1,生成回文日期
}else{
backDate = back_date(n/10000);
}
if(ab_back_date(n/1000000)>=n){
abBackDate = ab_back_date(n/1000000+1); // // 大于等于本身,则年份开头两位+1,生成回文日期
}else{
abBackDate = ab_back_date(n/1000000);
}
printf("%d\n",backDate);
printf("%d",abBackDate);
return 0;
}
运行结果:

2020年第11届蓝桥杯C/C++B组 第二轮省赛的更多相关文章
- 2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告
		
2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh ...
 - 2015年第六届蓝桥杯C/C++B组省赛题目解析
		
一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ...
 - 2015第六届蓝桥杯C/C++ B组
		
奖券数目:枚举 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其 ...
 - Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
		
有错误的或者有问题的欢迎评论 十六进制数1949对应的十进制数 19000互质的数的个数 70044与113148的最大公约数 第十层的二叉树 洁净数 递增序列 最大的元素距离 元音字母辅音字母的数量 ...
 - 第九届蓝桥杯C/C++B组省赛感想
		
因为做了近三年的初赛题,都对了5题+,所以这次比赛前信心满满,心里想最少水个省二没问题.可我怎么知道今年的套路居然和以前不一样了!一题深搜都没有,想想一周前做的第七届初赛题,10题有3.4题深搜题. ...
 - 加法变乘法——第六届蓝桥杯C语言B组(省赛)第六题
		
原创 加法变乘法 我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如:1+2+3+...+10*11+12+...+27*28+ ...
 - 螺旋折线——第九届蓝桥杯C语言B组(省赛)第七题
		
原创 如图p1.png所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, 1)=3, ...
 - 移动距离——第六届蓝桥杯C语言B组(省赛)第八题
		
原创 问题描述: 移动距离 X星球居民小区的楼房全是一样的,并且按矩阵样式排列.其楼房的编号为1,2,3...当排满一行时,从下一行相邻的楼往反方向排号.比如:当小区排号宽度为6时,开始情形如下: ...
 - 一步之遥——第七届蓝桥杯C语言B组(国赛)第一题
		
原创 一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里.矿车停在平直的废弃的轨道上.他的面前是两个按钮,分别写着“F”和“B”. 小明突然记起来,这两个按钮可以控制矿车在轨道上前进和后退.按 ...
 - 递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题
		
原创 标题:递增三元组 给定三个整数数组A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],请你统计有多少个三元组(i, ...
 
随机推荐
- Spark 中三种数据处理对象的区别: RDD-Dataset-Dataframe
			
1,对比表: RDD Dataframe Dataset 版本 1.0 1.3 1.6 描述 分布式数据集合 行列化的分布式数据集合 RDD 和 DataFrame的结合 数据格式 结构化和非结 ...
 - 【三维重建】Ubuntu20.04进行RealSenseD435环境配置及初步使用
			
一.环境配置 github上面的教程:https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux ...
 - 谷歌云|机密 GKE 节点可在计算优化的 C2D 虚拟机上使用
			
机密 GKE 节点可用于计算优化的 C2D 虚拟机. 许多公司已采用 Google Kubernetes Engine (GKE) 作为其应用程序基础架构中的关键组件.在某些情况下,使用容器和 Kub ...
 - postgressql知识点、源码
			
1.新增语法,tab键自动联想的代码位置. tab-complete.c中的函数pgsql_completion
 - 数据库常用sql
			
1.创建表 create table 表名( 字段名 类型 约束, 字段名 类型 约束 ... ) 如:create table students( id int unsigned primary k ...
 - ROS2
			
ROS2核心概念 节点 创建节点流程 编程接口初始化 创建节点并初始化 实现节点功能 销毁节点并关闭接口 #!/usr/bin/env python3 import rclpy # ROS2 Pyth ...
 - webrtc 拥塞控制相关
			
RFC8836 对实时交互式音视频应用的拥塞控制算法需求进行了较为全面的总结 延迟 拥塞控制算法应该尽可能降低延时,尤其是算法本身引入的延时.与此同时仍然需要提供可用的带宽水平. -吞吐率:在相应场景 ...
 - 攻防世界-fileclude
			
攻防世界的一道文件包含题目 include("文件名"):会将文件中的内容视为代码块接入include所在代码中,输出的只是执行后的结果,文件中的注释.定义等无法查看. 本题中可以 ...
 - clickhouse不喜欢sql末尾分号
			
今天用python连clickhouse查数据,sql语句末尾加了分号,始终报错 Code: 62, e.displayText() = DB::Exception: Syntax error 删掉分 ...
 - 全国分乡镇第五次人口普查数据shp数据库省市区县街道
			
==名称:全国第五次人口普查任意十个乡镇的乡镇界地图==数据说明:精确到乡镇级别.==数据:面数据,属性列表(乡镇名.乡镇代码,第六次人口普查分乡镇属性数据)==时间:截止2000年12月31日==格 ...