找到等于N(或输入数字)的唯一数字的算法

时间:2016-04-26 02:55:19

标签: math logic

语言无关的问题,但我想知道是否有人可以逻辑地提供如何创建一个集合的指导,通过添加或减去可以生成1到N之间的任何数字。

2 个答案:

答案 0 :(得分:0)

  1. 对所有数字进行排序。
  2. 删除彼此相邻的重复项(当前是否等于上一个?)
  3. 添加/减去遗体。

答案 1 :(得分:0)

一个想法。

如果我们仅使用求和,则由2小于或等于N的幂组成的集合将是这样的最小集合。通过减法,3的幂似乎是一个足以开始的想法。我怀疑它可能很小但没有证据。

我的理由如下。假设我们在集合中有k个数字。然后,通过求和和减法,我们可以得到最多3 ^ k个可能的结果。 (注意那些结果包含负整数。实际上,这样的一组结果相对于0是对称的。通常,我们将得到少于3 ^ k个不同的结果 - 其中一些将简单地重复)。

“最佳”选择的一个例子:

让第一个数字等于1.然后可能的结果是:-1,0,1。接下来,取3 - 然后我们将得到-4到4之间的所有整数。(选择数字2,而不是3,显然效率低下。)然后,为了获得下一个连续(和非重叠)整数序列,我们应该采用9.依此类推,直到达到数字N.

我们可以使用其他数字而不是3的幂。在这种情况下,我们应该处理将导致连续步骤的差距。我怀疑它会产生一个元素更少的集合。 (不过我可能错了。)