gpt4 book ai didi

java - 用 Java 求解多项式方程

转载 作者:行者123 更新时间:2023-12-01 19:55:59 27 4
gpt4 key购买 nike

我有一个等式。

a4 + b4 = c4 + d4

变量 a、b、c 和 d 可以取 0 到 1000 之间的任何值。编写一个程序,打印满足上述方程的所有可能的 a、b 和 c、d 对。

我尝试使用 Java 来做到这一点。

我尝试的方法之一是构建一个包含键值对的映射:<0,04>、<1,14>、<2 ,24>...<1000,10004>。构建 map 后,我希望迭代值列表,看看列表中两个元素的总和是否与列表中其他两个元素的总和匹配。我被困在这一点上。

public static void getMatchingPairs()
{
long a;
long b;
long c;
long d;
Map<Integer,Long> map = new HashMap<Integer, Long>();
for(int i = 0; i < 1001; i++)
{
long res = Double.valueOf(Math.pow(i, 4)).longValue();
map.put(i,res);
}

List<Long> lst = (List<Long>) map.values();
}

最佳答案

不要使用double math 计算 4 的幂。只需乘以 3 次,即计算 a*a*a*a + b*b*b*b .

然后创建一个Map结果为List用于计算结果的对数:Map<Long, List<int[]>>其中int[]是一个包含两个值的数组,即“对”。

例如,(1,2) 对结果值17 ,反向对 (2,1) 也是如此。由于这些是唯一具有该结果的对,因此您的 map 将包括 17 = [(1,2), (2,1)] .

不确定“打印所有可能的 a、b 和 c、d 对” 的含义。简单的答案就是那两对(结果 17 )。

更复杂的答案是,您需要打印每个对的组合,因为每对都可以是 (a,b)一对或一个(c,d)对,因此您可以创建所有对的组合:(1,2),(1,2) , (1,2),(2,1) , (2,1),(1,2) ,和(2,1),(2,1) .

这一切看起来非常多余,因为对于每个 (a,b)配对 a != b ,将有 4 种组合,因此也许您只需要打印一对的结果(而不是对的组合),并且仅当 a <= b 时才需要打印。 ,自 a > b是多余的。

无论如何,您需要从 map 中的所有值列表中打印以获得完整答案。

关于java - 用 Java 求解多项式方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com