所以我需要一种方法来弄清楚如何获得5个数字,当你添加其中任何2个数字时,它将产生一个总和,你只能通过添加那些特定的两个数字来获得。
以下是我所谈论的一个例子,但有3个数字:
1
3
5
1 + 3 = 4
1 + 5 = 6
3 + 5 = 8
添加任意两个这样的数字将最终得到一个唯一的总和,通过添加任何其他数字对无法找到。我需要这样做,但有5个不同的数字。如果你有一个方法可以找出如何用任意数量的数字来做这个,分享也会受到赞赏。 谢谢
答案 0 :(得分:10)
1, 10, 100, 10000, 100000
为您提供五个喜欢的数字。
通常,1, 10, 100, 1000, ..., 10^k
其中k
是您需要的数字。
更一般的是,您可以说b^0, b^1, ..., b^k
,其中b >= 2
。请注意,您具有特殊属性,不仅所有成对总和都是唯一的,而且所有子集总和都是唯一的(只需查看基础b
中的表示)。
答案 1 :(得分:4)
集合{1, 2, 5, 11, 21}
也有效。
你可以从一组两个或三个符合该属性的元素开始(对集合{1,2,5}
中的两个元素的任何加法运算都会给你一个唯一的总和),并且只包含下一个要考虑的数字。当前元素和这个新元素也为您提供了独特的总和。
示例贯穿:
假设我们的起始集S
为S={1,2,5}
。设U
为S
中两个元素之间所有和的集合。
S
中的元素为我们提供了唯一的总和1+2=3
,1+5=6
,2+5=7
,所以U={3,6,7}
。
考虑将11
添加到此集合中。我们需要检查1+11
,2+11
和5+11
是否都给了我们U
中没有看到的总和,并且它们之间都是唯一的。
1+11=12
,2+11=13
,5+11=17
。
由于12
,13
和17
之间都是唯一的总和,而且在U
中找不到,我们可以更新S
和{ {1}}:
U
S1 = {1,2,5,11}
。
您可以为U1 = {3,6,7,12,13,17}
执行相同的操作,您应该(希望)获得:
21
S2 = {1,2,5,11,21}
。
如果您需要的只是一个快速设置,Jason发布的解决方案生成起来要快得多。
答案 2 :(得分:2)
1
2
4
8
16
1
3
9
27
81
建议x ^ n,其中n是自然数的子集
的成员