法一:时间复杂度O(n2)
1. 分析解题思路:
-
我们要找出满足x + y=z,且x\in[0,a],y\in[0,b],z\in[0,c]的三元组(x,y,z)的个数。
-
可以通过遍历x和y的所有可能取值,然后根据x + y = z判断z是否在[0,c]范围内,如果在,则找到一个满足条件的三元组。
2. 具体计算过程:
-
我们使用嵌套循环来遍历x和y的取值。
-
外层循环遍历x,x从0到a,内层循环遍历y,y从0到b。
-
对于每一组(x,y),计算z=x + y。如果z满足0\leq z\leq c,则满足条件的三元组个数增加1。
- 用Python代码实现如下:
pythona, b, c = map(int, input().split())
count = 0
for x in range(a + 1):for y in range(b + 1):z = x + yif 0 <= z <= c:count += 1
print(count)
法2:时间复杂度O(n)
cpp#include <iostream>
using namespace std;int main() {int a, b, c;cin >> a >> b >> c;int count = 0;for (int x = 0; x <= a; ++x) {int y_count = max(0, min(b, c - x));count += y_count;}cout << count << endl;return 0;
}
在这段代码中:
-
首先从标准输入读取三个整数a、b、c。
-
然后通过 for 循环遍历x从0到a。
-
在每次循环中,计算当前x值下满足条件的y的个数,使用 max(0, min(b, c - x)) 来确保y的个数不会为负数且在合理范围内。
-
将每个x对应的y的个数累加到 count 变量中。
-
最后输出满足条件的三元组的个数。