我正在尝试编写一个算法,当用户输入数字“N”时,该算法将找到 A^5 + B^5 + C^5 的所有可能值。
例如,如果 N=100 我想创建一个包含所有可能值的数组,其中数组中的每个插槽都包含一个数字,该数字是通过插入 1-100 之间的数字 A^5 + B^5 + C^5 找到的. 所以数组中的一个位置包含来自 (1^5 + 1^5 + 1^5) 的 1。数组中的另一个位置包含数字 355447518(来自 19^5 + 43^5 + 46^5)。所以我的数组中会有 100^3 个元素。
public long[] possibleValues(int n)
{
long[] solutionSet = new long[(int) Math.pow(n, 3)];
for(int i=1;i<=n;i++)
{
solutionSet[i] = ((long) Math.pow(i, 5) + (long) Math.pow(i, 5) + (long) Math.pow(i, 5));
//testing purposes
System.out.println(i +"^5 " + "+" + i+"^5 " + "+" + i+"^5" + "=" + solutionSet[i]);
}
return solutionSet;
}
这就是我到目前为止所拥有的,但我的问题是它并没有完成 N 的所有排列。获得 N 的所有可能排列的最佳方法是什么?我是否让这比必要的更复杂?我将如何安排所有可能的(A、B、C)?