题目描述
方程: a^2 + b^2 + c^2 = 1000
这个方程有正整数解吗?有:a,b,c=6,8,30 就是一组解。
求出 a^2 + b^2 + c^2 = n(1<=n<=10000)的所有解,解要保证c>=b>=a>=1。
输入格式
存在多组测试数据,每组测试数据一行包含一个正整数n(1<=n<=10000)
输出格式
如果无解则输出"No Solution"。
如果存在多解,每组解输出1行,输出格式:a b c,以一个空格分隔
按照a从小到大的顺序输出,如果a相同则按照b从小到大的顺序输出,如果a,b都相同则按照c从小到大的顺序输出。
输入样例
4
1000
输出样例
No Solution
6 8 30
10 18 24
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int n = in.nextInt();
int m[] = new int[3];
for (int a = 1; a <= Math.sqrt(n); a++) {
for (int b = 1; b <= Math.sqrt(n); b++) {
for (int c = 1; c <= Math.sqrt(n); c++) {
if(a * a + b * b + c * c > n){
break;
}
if (a * a + b * b + c * c == n && a<=b && b<=c) {
m[0] = a;
m[1] = b;
m[2] = c;
System.out.print(m[0] + " " + m[1] + " " + m[2]);
System.out.println();
}
}
}
}
if (m[0] == 0) {
System.out.print("No Solution");
System.out.println();
}
}
}
}
"该代码片段是一个Java程序,用于查找满足条件a^2+b^2+c^2=n的所有正整数解。它通过三层循环遍历a、b、c的可能值,并检查它们的平方和是否等于输入的n。如果找到解,则按指定格式输出;如果没有解,则输出"NoSolution"。示例输入包括4和1000,分别对应无解和有解的情况。"
436

被折叠的 条评论
为什么被折叠?



