2010-03-20 60 views
1

我给了一个数字N,我必须从数组V中添加一些数字,以便他们将是平等的。 V由3的所有幂的数字组成:问题与数字

N = 17 
    S = 0 
V = 1 3 9 27 81 .. 

我应该将数字从V添加到N和S以使它们相等。上面的例子的解决方案是: 17 + 1 + 9 = 27,27,1和9取自V,从V的数字只能取一次,并且当它被取出时从V取出。

我尝试了对V进行排序然后添加从V至S,直到S中最大的数目已经达到N,但在有些测试中失败,当它是这样的:

N = 7 
S = 0 
V = 1 3 9 27 
So the solution will be: 
7 + 3 = 9 + 1 

在像这样的例子,我需要的数字都增加N和S,并且还选择了他们,让他们变得平等。 解决这个问题的任何想法?谢谢。在碱

+0

尽管我还没有确定这是真的属于SO还是数学相关的论坛,但我必须承认这是一个有趣的问题! – stakx 2010-03-20 10:47:02

+0

**问题:**是否允许'N'的初始值也是'V'(即3的幂)? – stakx 2010-03-20 10:51:09

+0

@stakx:是的。 – StolePopov 2010-03-20 10:52:18

回答

2

写入N 3:17 = 2 * 1 + 2 * 3 + 1 * 9
查找的3系数2中的第一功率,在这种情况下1
添加的3这个功率:17 + 1个
重复,直到所有的系数是0或1

17 = 2 * 1 + 2 * 3 + 1 * 9
17 + 1 = 2 * 9
17 + 1 + 9 = 27

7 = 1 * 1 + 2 * 3
7 + 3 = 1 * 1 + 1 * 9