Skip to content

Commit c98b70d

Browse files
author
杨世超
committed
Create 1925. 统计平方和三元组的数目.md
1 parent 8d7d466 commit c98b70d

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
## [1925. 统计平方和三元组的数目](https://leetcode-cn.com/problems/count-square-sum-triples/)
2+
3+
- 标签:数学、枚举
4+
- 难度:简单
5+
6+
## 题目大意
7+
8+
**描述**:给你一个整数 `n`
9+
10+
**要求**:请你返回满足 $1 \le a, b, c \le n$ 的平方和三元组的数目。
11+
12+
**说明**
13+
14+
- **平方和三元组**:指的是满足 $a^2 + b^2 = c^2$ 的整数三元组 `(a, b, c)`
15+
16+
**示例**
17+
18+
```Python
19+
输入 n = 5
20+
输出 2
21+
解释 平方和三元组为 (3,4,5) 和 (4,3,5) 。
22+
```
23+
24+
## 解题思路
25+
26+
### 思路 1:枚举算法。
27+
28+
我们可以在 `[1, n]` 区间中枚举整数三元组 `(a, b, c)` 中的 `a``b`。然后判断 $a^2 + b^2$ 是否小于等于 `n`,并且是完全平方数。
29+
30+
在遍历枚举的同时,我们维护一个用于统计平方和三元组数目的变量 `cnt`。如果符合要求,则将计数 `cnt``1`。最终,我们返回该数目作为答案。
31+
32+
利用枚举算法统计平方和三元组数目的时间复杂度为 $O(n^2)$。
33+
34+
- 注意:在计算中,为了防止浮点数造成的误差,并且两个相邻的完全平方正数之间的距离一定大于 `1`,所以我们可以用 $\sqrt{a^2 + b^2 + 1}$ 来代替 $\sqrt{a^2 + b^2}$。
35+
36+
### 思路 1:代码
37+
38+
```Python
39+
class Solution:
40+
def countTriples(self, n: int) -> int:
41+
cnt = 0
42+
for a in range(1, n + 1):
43+
for b in range(1, n + 1):
44+
c = int(sqrt(a * a + b * b + 1))
45+
if c <= n and a * a + b * b == c * c:
46+
cnt += 1
47+
return cnt
48+
```

0 commit comments

Comments
 (0)