我得到一个数字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 :(得分:2)
在基数3中写入N:17 = 2 * 1 + 2 * 3 + 1 * 9
用系数2求出3的第一次幂,在这种情况下为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