#10437. B - How many? 有多少个 比赛编号214

B - How many? 有多少个 比赛编号214

题目描述 😊

给定两个整数 S 和 ​T​,要求计算有多少个非负整数三元组 (a, b, c) 满足以下条件:

输入格式 📝

输入包含两行:

  • 第一行:两个整数 S 和 ​T​。

输出格式 💡

输出一个整数,表示满足条件的三元组 (a, b, c) 的个数。

约束条件 🔒

  • a+b+c1a+b+c≤1

输入样例 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{0,1}a, b, c \in \{0, 1\},因为 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 {0,1,2}\in \{0, 1, 2\},并判断是否满足上述两个条件。

合法三元组有(共 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),然后判断是否满足两个条件: