题目链接
Macw07和AC君都点赞了,点赞!!!
题目理解
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题描述:Era 流星雨每隔 50 年发生一次。给定一个人出生在 B 年前,寿命为 L 年,下一次流星雨将在 E 年后发生,计算这个人在有生之年能够看到多少次 Era 流星雨(包括出生年和去世年)。
输入格式
* 第一行包含一个整数 T 表示测试数据组的数量。
* 对于每组测试数据,输入三条整数 B, L, E。
输出格式
* 对于每组测试数据,输出一个整数,表示这个人在有生之年能看到的 Era 流星雨次数。
逻辑步骤
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 转换年份:
* 将出生年份转换为负数,即 birth_year = -B。
* 计算去世年份,death_year = birth_year + L。
2. 确定流星雨的年份:
* 下次流星雨发生在 E 年后,因此我们需要计算所有的流星雨发生年份,包括过去和未来。
* 考虑到流星雨每隔 50 年发生一次,所以从 E 开始回推到上一个流星雨的年份,直到这个年份小于或等于出生年份。
3. 计数:
* 计算所有在 [birth_year, death_year] 范围内的流星雨年份。
4. 输出结果:
* 输出每个人能看到的流星雨总次数。
C++ 代码解析
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 头文件和命名空间:
这里包含了一个非常通用的头文件bits/stdc++.h,它基本上包含了C++标准库的所有头文件。using namespace std;是使用标准命名空间,这样就可以直接使用如cin和cout等而不需要前缀std::。
2. 主函数:
程序首先读取测试用例的数量_,然后对每个测试用例执行循环。在循环中,读取每个测试用例的输入值b(出生年份前的年数)、l(寿命)、e(下一次流星雨距今的年数)。
3. 变量转换和初始化:
将b转换为正数,因为b是以前的年数,我们需要将其转换为正的出生年份。
dea是人的去世年份。
er是计算上一次流星雨的年份。
4. 计算上一次流星雨的确切年份:
这个循环将er调整到出生年份或之前的最近的一个流星雨年份。
5. 计数和输出:
使用一个循环从调整后的er开始,每隔50年计算一次,直到去世年份dea。
如果这个年份大于或等于出生年份b,则计数器cnt增加。
最后,输出这个计数器的值,即这个人一生中能看到的流星雨次数。
代码步骤分析(简洁版,可跳过)
1. 读取输入:
* 使用 cin 读取测试用例的数量以及每个测试用例的 B, L, E 值。
2. 年限转换:
* 将 B 乘以 -1 转换成实际的出生年份;计算去世年 dea。
3. 流星雨年份计算:
* 先计算最近一次流星雨年份 er,然后通过循环向前推算,直到找到小于或等于出生年份的年份。
4. 计数流星雨:
* 利用循环遍历每 50 年的流星雨年份,检查其是否在个人的生命周期内,并进行计数。
5. 输出:
* 将计数结果输出到标准输出。
总结
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
通过上述分析,我们发现这段代码有效地解决了问题,准确地计算了每个测试用例中个体在有生之年能看到的流星雨次数。这一过程综合运用了基本的数学计算、循环和条件判断,确保了结果的正确性。
我不是来要盲盒的!
点赞!!!\large\color{blue}点赞!!!点赞!!!
点赞+评论(含题号)可解锁新题解!\color{red}点赞+评论(含题号)可解锁新题解!点赞+评论(含题号)可解锁新题解!