早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求一道java代码设计题考虑方程式:a^3+b^3=c^3+d^3其中:“^”表示乘方.a、b、c、d是互不相同的小于30的正整数.这个方程有很多解.比如:a=1,b=12,c=9,d=10就是一个解.因为:1的立方加12的立

题目详情
求一道java代码设计题
考虑方程式:a^3 + b^3 = c^3 + d^3
其中:“^”表示乘方.a、b、c、d是互不相同的小于30的正整数.
这个方程有很多解.比如:
a = 1,b=12,c=9,d=10 就是一个解.因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729.
当然,a=12,b=1,c=9,d=10 显然也是解.
如果不计abcd交换次序的情况,这算同一个解.
你的任务是:找到所有小于30的不同的正整数解.把a b c d按从小到大排列,用逗号分隔,每个解占用1行.比如,刚才的解输出为:
1,9,10,12
不同解间的顺序可以不考虑.
要用4层for循环吗,机器工作量会不会很大,中间要做什么处理才好呢?
▼优质解答
答案和解析
import java.util.Arrays;
public class TestKoeiol {
public static void main(String[] args) {
int[] dics = new int[30];
for (int i = 0; i < 30; i++)
dics[i] = i * i * i;
for (int i = 1; i < 30; i++) {
for (int j = i + 1; j < 30; j++) {
for (int m = i + 2; m < 30; m++) {
if (m == i || m == j)
continue;
for (int n = m + 1; n < 30; n++) {
if (n == j || n == i)
continue;
if ((dics[i] + dics[j]) == (dics[m] + dics[n]))
sortPrint(i, j, m, n);
}
}
}
}
}
public static void sortPrint(int... nums) {
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
}
}
-----------------------------
result:
[1, 9, 10, 12]
[2, 9, 15, 16]
[2, 18, 20, 24]
[10, 19, 24, 27]