目录
题目来源:2020年第十届C/C++ B组第一场蓝桥杯省赛真题_戎码一生的博客-CSDN博客_蓝桥杯c++真题
第一题:跑步训练(模拟)
核心思路:
由于答案要求的是秒数,所以需要将上述的单位转换为秒,那么就可以得到平均每秒的能量损耗;因为有剩下的能量,不足以支撑1分钟的跑步的情况,所以需要对此情况进行特判
#include<iostream>
using namespace std;
int main()
{
int n = 10000;
int run = 600 / 60;//每秒的消耗
int time = 0;
while (n)
{
if (n - 600 < 0)//如果剩余的能量不支撑于1分钟run,则取整秒break
{
time = time * 60 + n / run;
break;
}
n -= 600;
n += 300;
time += 2;
}
cout << time;
return 0;
}
第二题:纪念日(模拟)
核心思路:
因为要求的是天数,平年365天,闰年366天,枚举天数的同时,特判平年还是闰年即可
#include<iostream>
using namespace std;
int yearDay(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
return 366;
}
return 365;
}
int main()
{
int time = 0;
for (int i = 1922; i <= 2020; i++)
{
time += yearDay(i);
}
time -= 22;//23-22=1
cout << time * 24 * 60 << endl;
return 0;
}
第三题:合并检测(数学)
核心思路:
假设总人数为100人,那么就有,对于k枚举 1~100 的范围内
(1)对于 总人数100%k==0 的情况:需要的总的试剂盒为:(100/i)+ i
········解释:(100/i):100个人中每次分为i个人 为 1组,那么总共就分为了 100/i组
········解释: +i是因为 它有1%的阳性率,(概率呈均匀分布)那么这100个人中就必定有人为阳性,那么就需要对,患阳性的那一组重新进行i个人的检测
(2)对于 总人数100%k!=0 的情况:需要的总的试剂盒为:(100/i)+ 1 + i