为愚蠢的问题标题道歉。我在 Java 中遇到了一个非分级挑战,主要是确定是否存在两个正整数 x 和 y,使得 ax+by=c,其中提供了 a、b 和 c。
上下文是给你两个价值 a 和 b 的硬币,你必须确定它们是否可以以某种方式组合成等于 c 的数量。关键是你的代码不能包含任何类型的循环或递归函数。
到目前为止,我已经确定欧几里得算法似乎对这类问题有用;因为找到 a 和 b 的最大公约数可以证明 x 和 y 作为整数的存在,从而完成了方程。问题是 x 和 y 仍然可能是负数,就像集合 [3,7,11] 的情况。3 和 7 之间的最大公约数是 1,它们可以组合成 11 到 3(-1)+7(2)。
由于您显然不能使用负数量的硬币,因此 11 不会是“鸡块数”(参考麦乐鸡问题,我认为这是相关的)。所以我正在寻找的是一种完全不同的方法来尝试这个没有任何类型的循环,或者是关于如何实际确定 x 和 y 的值以查看是否为负数的建议。
我不一定要为此寻找代码,只是任何建议或指南都会有所帮助。如果您没有解决方案但有兴趣思考这个问题,推荐阅读扩展欧几里得算法、Bézout 恒等式、丢番图方程和Chicken McNugget 定理。