8

所以我需要一种方法来弄清楚如何获得 5 个数字,当你添加其中任何 2 个时,它会产生一个总和,你只能通过添加这两个特定的数字来获得。

这是我正在谈论的一个示例,但有 3 个数字:

1
3
5

1 + 3 = 4
1 + 5 = 6
3 + 5 = 8

将这些数字中的任何两个相加最终都会得到一个唯一的总和,而该总和是通过添加任何其他数字对都无法找到的。我需要这样做,但有 5 个不同的数字。而且,如果您有一种方法可以弄清楚如何使用任意数量的数字来做到这一点,那么也将不胜感激。谢谢

4

3 回答 3

12

1, 10, 100, 10000, 100000给你五个你想要的数字。

通常,您需要的数字数量在1, 10, 100, 1000, ..., 10^k哪里。k

更一般地说,你可以说b^0, b^1, ..., b^k,在哪里b >= 2。请注意,您具有的特殊属性不仅是所有成对和都是唯一的,而且所有子集和都是唯一的(只需查看 base 中的表示b)。

于 2012-05-11T19:09:47.943 回答
4

该套装{1, 2, 5, 11, 21}也有效。

您可以从适合该属性的两个或三个元素的集合开始(对集合中两个元素的任何加法运算{1,2,5}都会给您一个唯一的总和),并且如果当前元素的加法和这个新元素也给出,则仅包括考虑的下一个数字你独特的总和。

一个示例贯穿:

假设我们的起始集SS={1,2,5}。让U是 中两个元素之间的所有和的集合S。中的元素S给了我们唯一的和1+2=3,,,,所以。1+5=62+5=7U={3,6,7}

考虑添加11到这个集合中。我们需要检查1+11, 2+11, 并且5+11它们都给了我们没有看到的U和在它们之间都是唯一的。

1+11=12, 2+11=13, 5+11=17.

由于121317都是它们之间唯一的和,并且不在 中U,我们可以更新SU为: S1 = {1,2,5,11} U1 = {3,6,7,12,13,17}

您可以对 执行相同的程序21,并且您应该(希望)得到: S2 = {1,2,5,11,21} U2 = {3,6,7,12,13,17,22,23,26,32}

如果您只需要一个快速设置,那么 Jason 发布的解决方案的生成速度要快得多。

于 2012-05-11T19:34:04.237 回答
2
1
2
4
8
16

1
3
9
27
81

建议 x ^ n 其中 n 是自然数子集的成员

于 2012-05-11T19:13:00.380 回答