所以我需要一种方法来弄清楚如何获得5个数字,当你将其中任何2个数字相加时,它将产生一个只能通过将这两个特定数字相加而得到的和。
这是我所说的一个例子,但是有3个数字:
1
3.
5
1+3=4
1+5=6
3+5=8
将这些数字中的任何两个相加,最终将得到一个唯一的和,而该和不能通过添加任何其他数字对来找到。我需要这样做,但是有5个不同的数字。如果你有一个方法可以用任何数量的数字做到这一点,那么分享也会很受欢迎。谢谢
发布于 2012-05-12 03:09:48
1, 10, 100, 10000, 100000给出了您想要的五个数字。
通常是1, 10, 100, 1000, ..., 10^k,其中k是您需要的数字的数量。
更一般地说,你可以说b^0, b^1, ..., b^k,这里是b >= 2。请注意,您有一个特殊的属性,即不仅所有成对和都是唯一的,而且所有子集和都是唯一的(只需查看基本b中的表示)。
发布于 2012-05-12 03:34:04
set {1, 2, 5, 11, 21}也可以工作。
您可以从符合该属性的两个或三个元素的集合开始(对set {1,2,5}中的两个元素进行的任何相加操作都会给出一个唯一的和),并且只有在当前元素和这个新元素的相加也给出唯一和的情况下才包括要考虑的下一个数字。
一个简单的示例:
假设我们的起始集合S是S={1,2,5}。设U是S中两个元素之间的所有和的集合。S中的元素为我们提供了唯一的和1+2=3,1+5=6,2+5=7,so 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和U更新为: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-12 03:13:00
1
2
4
8
16
1
3
9
27
81建议x^n,其中n是自然数子集的成员
https://stackoverflow.com/questions/10557152
复制相似问题