最近在知乎上看见一个问题:
有一个黑匣子,黑匣子里有一个关于 x 的多项式 p(x) 。我们不知道它有多少项,但已知所有的系数都是正整数。每一次,你可以给黑匣子输入一个整数,黑匣子将返回把这个整数代入多项式后的值。那么,最少需要多少次, 我们可以得到这个多项式每项的系数呢?
思维过程和答案都很有意思,本人也是个菜鸟,默默地用c++实现并记录下来。
思维过程和答案都很有意思,本人也是个菜鸟,默默地用c++实现并记录下来。
/*
输入:
n:多项式的指数;an...a2,a1,a0各项系数
(p(x)=an*x^n+an-1*x^(n-1)+...+a1*x+a0;)
第一次输入的数:1
第二次输入的数:s+1
输出:
第一次输入数代入结果:s
第二次输入数代入结果:s1
热后输出各项系数:
an,an-1...a1,a0;
算法思想:
第一次输入1所得s=an+an-1+..+a1+a0,
第二次输入s,则s1=an*(s+1)^n+an-1*(s+1)^(n-1)+...+a1*(s+1)+a0 此处有重点,注意观察s1可以用s+1进制表示
则可以将s1转换成s+1进制,然后得出各项系数
注意:第一次得到S是为了保证对于任意系数
其实最大系数不超过N的多项式,本来就是N进制的本质