题目描述
方程: 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();
}
}
}
}