- 标签:数学、枚举
- 难度:简单
描述:给你一个整数
要求:请你返回满足
说明:
-
平方和三元组:指的是满足
$a^2 + b^2 = c^2$ 的整数三元组$(a, b, c)$ 。 -
$1 \le n \le 250$ 。
示例:
- 示例 1:
输入 n = 5
输出 2
解释 平方和三元组为 (3,4,5) 和 (4,3,5)。
- 示例 2:
输入:n = 10
输出:4
解释:平方和三元组为 (3,4,5),(4,3,5),(6,8,10) 和 (8,6,10)。
我们可以在
在遍历枚举的同时,我们维护一个用于统计平方和三元组数目的变量 cnt
。如果符合要求,则将计数 cnt
加
利用枚举算法统计平方和三元组数目的时间复杂度为
- 注意:在计算中,为了防止浮点数造成的误差,并且两个相邻的完全平方正数之间的距离一定大于
$1$ ,所以我们可以用$\sqrt{a^2 + b^2 + 1}$ 来代替$\sqrt{a^2 + b^2}$ 。
class Solution:
def countTriples(self, n: int) -> int:
cnt = 0
for a in range(1, n + 1):
for b in range(1, n + 1):
c = int(sqrt(a * a + b * b + 1))
if c <= n and a * a + b * b == c * c:
cnt += 1
return cnt
- 时间复杂度:$O(n^2)$。
- 空间复杂度:$O(1)$。