每日一题-20240201

题目描述

1925. 统计平方和三元组的数目

一个 平方和三元组 (a,b,c) 指的是满足 a2 + b2 = c2整数 三元组 abc

给你一个整数 n ,请你返回满足 1 <= a, b, c <= n平方和三元组 的数目。

示例 1:

1
2
3
输入:n = 5
输出:2
解释:平方和三元组为 (3,4,5) 和 (4,3,5) 。

示例 2:

1
2
3
输入:n = 10
输出:4
解释:平方和三元组为 (3,4,5),(4,3,5),(6,8,10) 和 (8,6,10) 。

提示:

  • 1 <= n <= 250

解题思路

无脑暴力解。

代码实现

实现一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Solution1925Case1 {
/**
* @param n
* @return int
* @author Forest Dong
* @date 2024/02/18 17:27
*/
private static int countTriples(int n) {
int count = 0;
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
int sum = i * i + j * j;
if (sum <= n * n) {
double sqrt = Math.sqrt(sum);
if (sqrt % 1 == 0) {
count++;
}
}
}
}
return count;
}

public static void main(String[] args) {
System.err.println(countTriples(10));
}
}

实现二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Solution1925Case2 {
/**
* @param n
* @return int
* @author Forest Dong
* @date 2024/02/18 17:27
*/
private static int countTriples(int n) {
int count = 0;
for (int i = 1; i < n; i++) {
for (int j = 1; j < n; j++) {
int sum = i * i + j * j;
if (sum <= n * n) {
for (int k = 1; k <= n; k++) {
if (k * k == sum) {
count++;
}
}
}
}
}
return count;
}

public static void main(String[] args) {
System.err.println(countTriples(10));
}
}