您的位置:首页 > 其它

Horner Rule(霍纳法则)

2016-08-18 22:06 169 查看
多项式求值,a0 + a1x + a2x2 +… + anxn;c常规算法就是直接这样求和,但是想也知道肯定效率不高的,这个其实有一个更高效的算法,叫 Horner Rule. 其实就是将多项式变形为

((…(((anx +an-1)x+an-2)x+ an-3)…)x+a1)x+a0

代码样例如下:

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
const int Max = 1e6+7;
int a[100010];
int main()
{
int n, x;
while(~scanf("%d%d",&n,&x))//n 是多项式的最高次数,x是x的值
{
for(int i = 0;i<=n;i++)
scanf("%d",&a[i]);//系列系数a0..an

int sum = 0;
for(int i = n;i>=0; --i)
{
sum = sum*x + a[i];
sum %= Max;//将sum控制在一定大小
}
printf("%d\n",sum);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: