[语言月赛 202412] 聪明猪猪大赛 的题解
记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。
在解题之前提交题解的代码会导致封禁。
作者:
概述
本题要求根据给定的两个竞赛的起始年份和每年场次,计算猪历 年时两项竞赛共举办了多少场比赛。
核心解法是分别判断 是否大于等于各竞赛的起始年份,若成立则累加对应的每年场次数。
分析
核心观察
每项竞赛仅在起始年份及之后的每一年举办,因此某一年是否举办只取决于该年份是否不小于起始年份。
思路
设 ICPC 自 年起每年
场,CCPC 自
年起每年
场。
在猪历 年,ICPC 的举办场数为:
CCPC 的举办场数为:
总场数为二者之和。本题数据范围最大 ,累加可能达到
,需使用 64 位整数存储。
具体示例
样例 :
。因为
且
,所以答案
。
样例 :
。因为
不成立,ICPC 为
;
成立,CCPC 为
,答案
。
算法步骤
- 读入五个整数
。
- 将答案
ans初始化为。
- 若
,则将
ans增加。
- 若
,则将
ans增加。
- 输出
ans。
复杂度分析
- 时间复杂度:
- 空间复杂度:
实现注意事项
- 所有变量使用 64 位整数(C++ 中
long long,Python 中int自动支持),避免溢出。 - 输入格式为每行一个整数,按顺序读取即可。
- 判断条件为
>=,包含起始年份本身。
源代码
#include <bits/stdc++.h>
using namespace std;
int main() {
long long a, b, c, d, x;
cin >> a >> b >> c >> d >> x;
long long ans = 0;
if (x >= a) ans += b;
if (x >= c) ans += d;
cout << ans << '\n';
return 0;
}
a = int(input())
b = int(input())
c = int(input())
d = int(input())
x = int(input())
ans = 0
if x >= a:
ans += b
if x >= c:
ans += d
print(ans)
评论