2020年7月5日第十一届蓝桥杯省赛真题C/C++ A组第一场
题号 | 题目 | 类型 | 分值 |
---|---|---|---|
1 | 跑步训练 | 结果填空 | 5 |
2 | 合并检测 | 结果填空 | 5 |
3 | 分配口罩 | 结果填空 | 10 |
4 | 矩阵放置 | 结果填空 | 15 |
5 | 完美平方数 | 结果填空 | 15 |
第一题:跑步训练
题目描述小明要做一个跑步训练。 初始时,小明充满体力,体力值计为 10000 。如果小明跑步,每分钟损耗 600 的体力。如果小明休息,每分钟增加
300 的体力。体力的损耗和增加都是均匀变化的。
小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。如果某个时刻小明的体力到达 0 ,他就停止锻炼。
请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案。答案中只填写数,不填写单位。
思路
关键是体力满600时才会休息,不足600不用休息,直接跑完。
代码
int sum = 10000;
int ans=0;
while(sum>0){
if(sum>=600){
//满600既要跑步又要休息,加上120秒,即2分钟
sum -= 600;
sum += 300;
ans += 120;
}
else{
//不足600,只需跑步。
ans += sum/10;//60秒跑600米,10米/秒,sum/10得出剩下的秒数
sum -= sum;
}
}
printf("%d\n",ans);//3880
第二题:合并检测
题目描述新冠疫情由新冠病毒引起,最近在 A 国蔓延,为了尽快控制疫情, A 国准 备给大量民众进病毒核酸检测。然而,用于检测的试剂盒紧缺。
为了解决这一困难,科学家想了一个办法:合并检测。 即将从多个人(k 个)采集的标本放到同一个试剂盒中进行检测。
如果结果为阴性,则说明这 k个人都是阴性,用一个试剂盒完成了 k 个人的检测。 如果结果为阳性,则说明 至少有一个人为阳性, 需要将这 k个人的样本全部重新独立检测(从理论上看, 如果检测前 k−1 个人都是阴性可以推断出第 k 个人是阳性&#x