#10437. B - How many? 有多少个 比赛编号214
B - How many? 有多少个 比赛编号214
题目描述 😊
给定两个整数 S 和 T,要求计算有多少个非负整数三元组 (a, b, c) 满足以下条件:
输入格式 📝
输入包含两行:
- 第一行:两个整数 S 和 T。
输出格式 💡
输出一个整数,表示满足条件的三元组 (a, b, c) 的个数。
约束条件 🔒
输入样例 1 🧐
1 0
输出样例 1 🎉
4
解释: 满足条件的三元组有:
- (0, 0, 0)
- (0, 0, 1)
- (0, 1, 0)
- (1, 0, 0)
一共有 4 个三元组。
输入样例 2 🧐
2 5
输出样例 2 🎉
10
输入样例 3 🧐
10 10
输出样例 3 🎉
213
输入样例 4 🧐
30 100
输出样例 4 🎉
2471
🔍 题目核心理解
但从样例和解释来看,实际上这是一个典型的 枚举三元组问题。
设:
- 三元组 (a,b,c) 满足:
- 并且 a,b,c 都是非负整数。
✅ 输入样例 1:
1 0
我们要枚举所有满足:
因为 T=0T = 0,所以只允许积为 0 的三元组。 枚举所有 ,因为 a+b+c 不能超过 1:
所有满足的组合如下:
- (0, 0, 0):和为 0,积为 0 ✅
- (0, 0, 1):和为 1,积为 0 ✅
- (0, 1, 0):和为 1,积为 0 ✅
- (1, 0, 0):和为 1,积为 0 ✅
共 4 个合法三元组。
✅ 输入样例 2:
2 5
我们要找所有 (a,b,c)(a, b, c) 满足:
穷举a, b, c ,并判断是否满足上述两个条件。
合法三元组有(共 10 个):
- (0, 0, 0)
- (0, 0, 1)
- (0, 1, 0)
- (1, 0, 0)
- (0, 0, 2)
- (0, 2, 0)
- (2, 0, 0)
- (0, 1, 1)
- (1, 0, 1)
- (1, 1, 0)
可以试算一下: 例如 (1, 1, 1) 的和是 3,超出 2,非法; 例如 (2, 1, 0):和为 3,非法; 其他都不超限,积也都 ≤ 5。
✅ 总结解法思路
可以三重循环暴力枚举 a,b,c 从 0 到 S(因为加起来不能超过 S),然后判断是否满足两个条件:
统计
相关
在下列比赛中: