您会得到一个非负整数n
和一个integer p >= 2
。您需要将一些次p
幂(p=2
即正方形,p=3
表示立方体)加在一起才能得到n
。这始终适用于任何非负数n
,但您不知道需要多少次p
幂(任何正整数)。
这是您的任务:找到p
可以求和的最小n 次方n
。
例子
>>> min_powers(7, 2)
4 # you need at least four squares to add to 7
# Example: (2)^2 + (1)^2 + (1)^2 + (1)^2 = 4 + 1 + 1 + 1 = 7
>>> min_powers(4, 2)
1 # you need at least one square to add to 4
# Example: (2)^2 = 4
>>> min_powers(7, 3)
7 # you need at least seven cubes to add to 7
# Example: 7*(1)^3 = 7
>>> min_powers(23, 3)
9 # you need at least nine cubes to add to 23
# Example: 2*(2)^3 + 7*(1)^2 = 2*8 + 7*1 = 23
有关此问题Waring问题的相关Wikipedia文章。
规则
您的代码必须是程序或函数。
输入是两个整数,
n
并且可以p
按任意顺序输入。您可以假设所有输入均有效(n
是任何正整数,p >= 2
输出是一个整数,表示求和所需的幂数
n
。这是代码高尔夫,所以最短的程序获胜,不一定是最有效的。
允许所有内置插件。
与往常一样,如果问题仍然不清楚,请告诉我。祝你好运,打高尔夫球!
好吧,看起来蛮力会赢。我希望不是。
—
lirtosiast,2015年
这个问题是令人难以置信的努力,我怀疑任何回答要么不能完成,同时给予正确的结果。
—
orlp 2015年
至少有上限
—
qwr 2015年