如何算这个公式呢?
一般都是用pow,这是个n*(n-1)/2+n复杂度的方法,用秦九韶公式可以把其化简为
n+n的复杂度,是不是很有用呢
上面的式子可以这样化简
(a[n]*x^(n-1)+a[n-1]*x^(n-2)+...+a[1])*x+a[0]
(((a[n]*x^(n-2)+a[n-1]*x^(n-3)+...+a[2])*x+a[1])*x)+a[0]
那么可以一直递归下去,可以得到一个非常简单的表达式
注意一点:
for循环要从高次幂开始,这样每次乘的x会叠加到第一项上,这才正确
#include<stdio.h>
int n,x,a[10];
inline long long qing()
{
long long sum;
for(int i=n;i>=1;i--)
{
sum=(sum+a[i])*x;
}
return sum;
}