
我们先直接尝试暴力循环四轮看能不能得到答案,条件:四个数的平方相加等于这个数
①接收答案result
②循环四轮i,j,k,l
③如果i*i+j*j+k*k+l*l=result
④按照要求的格式输出这四个数字
代码如下👇
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int result=scan.nextInt();
int []arr=new int[4];
int ans=(int) (Math.sqrt(result)+1);
boolean b=false;
for (int i = 0; i < ans; i++) {//开始循环
if (i*i>result) {
break;//为了不超时加入条件
}
for (int j = i; j < ans; j++) {
if (i*i+j*j>result) {
break;//为了不超时加入条件
}
for (int k = j; k < ans; k++) {
if (i*i+j*j+k*k>result) {
break;//为了不超时加入条件
}
for (int l = k; l < ans; l++) {
if (i*i+j*j+k*k+l*l==result) {
arr[1]=i;
arr[2]=j;
arr[0]=k;
arr[3]=l;
b=false;
break;//为了不超时加入条件
}
}
if (b) {
break;//为了不超时加入条件
}
}
if (b) {
break;//为了不超时加入条件
}
}
if (b) {
break;//为了不超时加入条件
}
}
Arrays.sort(arr);//排序输出
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
scan.close();
}
希望大家能动手自己尝试尝试这个代码非常的有意思掌握暴力冲刺国奖
测试用例👇
12
0 2 2 2
15000
56 58 60 70