蓝桥杯C/C++b组填空第一题合集
前言
比赛标准的签到题,比赛时的第一题。不会考到什么算法,甚至都不需要你打代码。但有时候第一题都没做出来的确是非常挫灭信心
看了看历年题目。很多小陷阱也不少
今年的比赛也正好还有一个月,自己对填空题第一题进行了一些整理
2022C/C++ 大学B组省赛
题目
九进制正整数 (2022), 转换成十进制等于多少?
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案
1478
分析
经典的进制转化
从最右边开始一个个乘以进制就好,直接用计算器
2 * 90 + 2 * 91 + 0 * 92 + 2 * 93 = 1478
2021C/C++ 大学B组省赛
题目
小蓝准备用256MB 的内存空间开一个数组,数组的每个元素都是 32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问256MB 的空间可以存储多少个32 位二进制整数?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案
67108864
分析
1B等于8比特,也就是二进制占8位,所以我们的计算公式为256* 1024* 1024*8/32 = 67108864
推荐计算器做,代码的话也能用位运算很容易的写出,其中>>2等于除以4,<<20位就是乘以2的20次方
乘了两个1024,跟上面列式计算一样
#include <stdio.h>
int main() {
printf("%d", 256 >> 2 << 20);
}
2021C/C++ 大学B组国赛
题目
小蓝家的网络带宽是 200 Mbps,请问,使用小蓝家的网络理论上每秒钟最多可以从网上下载多少 MB 的内容。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案
25
分析
注意分清宽带的Mb和下载速度的MB 一个是大写B,一个是小写b,其中大写B代表字节,小写b代表比特,1字节=8比特。单位之间转化公式:
1Mb=1024kb=10241024bit=1024128Byte=128KB=0.125MB
这道题直接算就可以,就是200/8=25.
2020C/C++ 大学B组省赛
题目
小明要做一个跑步训练。
初始时,小明充满体力,体力值计为10000。如果小明跑步,每分钟损耗600的体力。如果小明休息,每分钟增加300的体力。体力的损耗和增加都是均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。如果某个时刻小明的体力到达0,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。答案中只填写数,不填写单位。
答案
3880
分析
当时有很多人是直接计算的,看出每一个周期是两分钟,每个周期减少300体力同时耗时2*60=120s
10000/300取整为33,剩下100体力。这100体力用时1/6分钟时间消耗完
所以总时间为33 * 120+10 = 3970
发现问题了吗?
如果是代码实现呢?
#include<iostream>
using namespace std;
int main() {
int n = 10000;
int second = 0;
while (n > 0 && (second % 2 != 0 || n >= 600)) {
if (second % 2 == 0) {
n -= 600, second++;
}
else {
n += 300, second++;
}
}
cout << second * 60 + 60 * n / 600;
return 0;
}
问题就在于,我们最后的一个(甚至几个)周期前,就已经先把体力耗尽了,这货跑不动了
我们第32个周期的时候结束的时候32300=9600,只剩下400体力了,根本没办法完成第33个周期,当年不知道坑了多少人
所以正确口算应该是32120+40=3880
2020C/C++ 大学B组国赛
题目
美丽的 2
小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。
他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?
答案
563
分析
推荐写代码,1~2020一个个枚举一下就好
# include <stdio.h>
int main()
{
int idx = 0;
int j;
for(int i = 1; i <= 2020; i++){
j = i;
while(j){
if(j % 10 == 2){
idx++;
break;
}
j /= 10;
}
}
printf("%d",idx);
return 0;
}
注意if条件是%10 == 2,也就是一位一位往右移,我看到过%2 ==0的,还看到过忘记break的,算出来会有很多重复
2019C/C++ 大学B组省赛
题目
组队
作为篮球队教练,你需要从以下名单中选出1号到5号位各一名球员,组成球队的首发阵容。
每位球员担任1号位至5号位的评分分别如下表。请你计算首发阵容1号位至5号位的评分之和最大可能是多少?
答案
490
分析
直接做就好,题目意思就是1~5号的评分和最大嘛。
那就是98+99+99+98+98=492
这个也坑了不少人,一个球员只能去一个位置
这是题目的隐藏条件,所以最大只能选出490的最大组合,看图就好。
2019C/C++ 大学B组国赛
题目
小明想找到两个正整数X和Y,满足
1.2019<X<Y
2.20192<x2<Y2
请你求出所有可能的解中,X+Y的最小值
答案
7072
分析
直接暴力枚举就好,代码如下:
#include<iostream>
using namespace std;
int main()
{
for(int i = 2020;i < 10000;i ++)
for(int j = i + 1;j < 10000;j ++)
if(i * i * 2 == 2019 * 2019 + j * j)
{
cout<<i + j<<endl;
return 0;
}
}
2018C/C++ 大学B组省赛
题目
题目描述
2000年的1月1日,是那一年的第1天。
那么,2000年的5月4日,是那一年的第几天?
注意:需要提交的是一个整数,不要填写任何多余内容。
答案
125
分析
这个。。打开电脑日历一个个数都行,数仔细点就好
2018C/C++ 大学B组国赛
题目
换零钞
x星球的钞票的面额只有:100元,5元,2元,1元,共4种。
小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱。
小明有点强迫症,他坚持要求200元换出的零钞中2元的张数刚好是1元的张数的10倍,
剩下的当然都是5元面额的。
银行的工作人员有点为难,
你能帮助算出:
在满足小明要求的前提下,
最少要换给他多少张钞票吗?
(5元,2元,1元面额的必须都有,不能是0)
答案
74
分析
简单的枚举,代码如下
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int sum = 0;
for (a = 1; a < 40; a++)
{
for (b = 1; b < 200; b++)
{
if (5 * a + 2 * 10 * b + 1 * b == 200)
{
printf("5 * %d + 2 * 10 * %d + 1 * %d == 200\n", a, b, b);
sum++;
}
}
}
printf("%d", sum);
return 0;
}
模拟题
待续。。。。