我一直在接受这些艰难的面试问题。这个让我很困惑。
您获得了一个函数poly
,它接受并返回int
。它实际上是一个带有非负整数系数的多项式,但你不知道系数是什么。
您必须编写一个函数,使用尽可能少的poly
调用来确定系数。
我的想法是使用递归知道我可以通过poly(0)
获得最后一个系数。所以我想将poly
替换为(poly - poly(0))/x
,但我不知道如何在代码中执行此操作,因为我只能调用poly
。任何人都知道如何做到这一点?
答案 0 :(得分:28)
这是一个巧妙的技巧。
int N = poly(1)
现在我们知道多项式中的每个系数最多为N
。
int B = poly(N+1)
现在展开基础B
中的N+1
,您就拥有系数。
尝试解释:代数地,多项式是
poly = p_0 + p_1 * x + p_2 * x^2 + ... + p_k * x^k
如果你有一个号码b
并在基础n
展开,那么你就得到了
b = b_0 + b_1 * n + b_2 * n^2 + ...
其中每个b_i
都是唯一确定的b_i < n
。