秦九韶算法

//计算多项式a0+a1*x+a2*x^2+...+an*x^n
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ar[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&ar[i]);
    }
    int p = a[n-1];
    for(i=n-1;i>=0;i--)
    {
        p = p*x + a[i];
    }
    return 0;
}

时间: 2024-08-05 00:00:09

秦九韶算法的相关文章

秦九韶算法求解多项式

秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法.在西方被称作霍纳算法.它是一种将一元n次多项式的求值问题转化为n个一次式的算法. 一般地,一元n次多项式的求值需要经过[n(n+1)]/2次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法.其大大简化了计算过程,即使在现代,利用计算机解决多项式的求值问题时,秦九韶算法依然是最优的算法. 题目:写程序计算给定多项式在给定点x处的值 f(x) = a0 + a1x + … + an-1xn-1 + anxn 分析:对比使用常规算法和

算法 秦九韶算法

秦九韶算法又叫霍纳算法. 一般地,一元n次多项式的求值需要经过[n(n+1)]/2次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法.在人工计算时,一次大大简化了运算过程. Pn(x)= anx ^n+a(n-1)x^(n-1)+…+a1x+a0 可简化成 Pn(x)= anx ^n+a(n-1)x^(n-1)+…+a1x+a0=((…(((anx +an-1)x+an-2)x+ an-3)…)x+a1)x+a0 1 package com.qyf404.lean.algorithm; 2

bzoj3157国王奇遇记(秦九韶算法+矩乘)

bz第233题,用一种233333333的做法过掉了(为啥我YY出一个算法来就是全网最慢的啊...) 题意:求sigma{(i^m)*(m^i),1<=i<=n},n<=10^9,m<=200 别人的做法: O(m^2logn),O(m^2),甚至O(m)的神做法 学渣的做法:矩乘+秦九韶算法,O(m^3logn),刚好可以过最弱版本的国王奇遇记的数据 (极限数据单点其实是1.2s+,不想继续卡常了-bzoj卡总时限使人懒惰-如果把矩乘的封装拆掉可能会快点吧,然而人弱懒得拆了...

算法 《秦九韶算法java实践》

[历史背景] 秦九韶算法是中国南宋时期的数学家秦九韶表述求解一元高次多项式的值的算法--正负开方术.它也可以配合牛顿法用来求解一元高次多项式的根.在西方被称作霍纳算法(Horner algorithm或Horner scheme),是以英国数学家威廉·乔治·霍纳命名的. [原理解释] 设有n+1项的n次函数 f(x)=anxn+ an-1xn-1+an-2xn-2+ an-3xn-3+-- a2x2+a1x+ a0 将前n项提取公因子x,得 f(x)=(anxn-1+ an-1xn-2+an-2

多项式计算之秦九韶算法

多项式求值与秦九韶算法 一.引言 多项式函数常常用于描述现实世界的各种规律,而在用计算机计算多项式的值的时候,不同算法的计算时空复杂度通常不一样.如一个n次多项式 f(x)=a[n]x^n+a[n-1]x^(n-1)+......+a[1]x+a[0],我们的常规计算办法是,直接计算,这样我们的时间复杂度为:O(n^2) 下面我们介绍秦九韶算法: 其核心思想:后面每一次计算都依赖于前面计算的结果,这样以减少重复的计算. 简单引例: 计算 x^8 直接算将算8次乘法,而这8次都是必要的吗?显然不是

hdu.1111.Secret Code(dfs + 秦九韶算法)

Secret Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 670    Accepted Submission(s): 109 Problem Description The Sarcophagus itself is locked by a secret numerical code. When somebody wan

算法研究:一维多项式求值(秦九韶算法)

问题通式: 求指定点X处的函数值. 思路: 运用秦九韶算法 将多项式表述成如下嵌套模式: 于是可以转换成程序语言思想: 可通过for循环来实现. 代码实现: C语言代码如下: #include <stdio.h> /* *函数名:double odpf(double array[], int n, double x) *参数:double array[] 系数数组 * int n 表示n项 * double x x的值 *返回值:计算结果sum *说明:One dimensional poly

秦九韶算法知识点

秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法.在西方被称作霍纳算法. 秦九韶(约公元1202年-1261年),字道古,南宋末年人,出生于鲁郡(今山东曲阜一带人). 一般地,一元n次多项式的求值需要经过2n-1次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法. 在人工计算时,一次大大简化了运算过程. 把一个n次多项式 改写成如下形式: 求多项式的值时,首先计算最内层括号内一次多项式的值,即 然后由内向外逐层计算一次多项式的值,即 这样,求n次多项式f(x)的值就转化为求n个

秦九韶算法详解

秦九韶算法 秦九韶算法是将一元n次多项式的求值问题转化为n个一次式的算法,比普通计算方式提高了一个数量级 普通算式 a*x^i 因为多次求幂,消耗了大量的计算时间 我们来分析一下秦九韶算法 例如: 求 1+x+2x^2+3x^3 当x=2时的值 首先我们将系数按照从大到小的方式提出来排列 如图所示,我们需要将系数这样排列计算 除了第一个值以外,其他的处置我们都在循环内取得,首先我们需要得到第一个值(注明,从第二个循环开始即使用sum结果进行乘积) for (int i = 0; i <n-1;