一.算法简介

一般地,一元n次多项式的求值需要经过(n+1)*n/2次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法。在人工计算时,一次大大简化了运算过程。

二.算法应用

1.大整数取模(hdu 1212 Big Number)

(1)题意:给你一个长度不超过1000的大数A,还有一个数值不超过100000的B,快速求A % B。

(2)分析:由秦九昭算法可知,任意一个整数n = akak-1ak-2.......a2a1a0可以拆分为:

n = (((((ak)*10 + ak-1)*10 + ak-2)*10 + .......)*10 + a1)*10+a0

例如:1234 = ((1*10 + 2)*10 + 3)*10 + 4

则大整数取模就可以转化为n个多项式每步取模。

(3)代码:

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
const int maxn = 10000 + 7;
char str[maxn];
int Horner(int mod){//秦九昭算法int len = strlen(str);int ans = 0;for(int i = 0;i<len;i++){ans = (ans*10 + str[i] - '0')%mod;}return ans;
}
int main()
{int mod;while(scanf("%s%d",str,&mod)!=EOF){int num = Horner(mod);printf("%d\n",num);}return 0;
}

2.UVA10929

代码:

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
const int maxn = 10000 + 7;
char str[maxn];
int Horner(){int len = strlen(str);int ans = 0;for(int i = 0;i<len;i++){ans = (ans*10 + str[i] - '0')%11;}return ans;
}
int main()
{while(scanf("%s",str)!=EOF){if(str[0]=='0'&&strlen(str)==1)break;int num = Horner();if(num)printf("%s is not a multiple of 11.\n",str);else printf("%s is a multiple of 11.\n",str);}return 0;
}

ACM数论----秦九昭算法相关推荐

  1. HDU1212(大数取模-秦九昭算法)

    秦九昭算法: 把一个n次多项式f(x)=a[n]x^n+ a[n-1]x^(n-1)+-+a[1]x+a[0]改写成如下形式:f(x)=a[n] x^n + a[n-1]x^(n-1))+-+a[1] ...

  2. 【基础】秦九昭算法实现的多项式快速计算

    秦九昭算法 图片来自搜狗百科 #include <iostream> using namespace std; void main() {int num, x;//num为多项式阶数,x为 ...

  3. UVA-10929-You can say 11(秦九昭算法+同余与模算术)

    原题链接 1000位大数取余: 秦九昭算法+同余与模算术: 1314 = (((1)*10+3)*10+1)*10+4 ( a + b ) % n = ( ( a % n ) + ( b % n ) ...

  4. 秦九昭算法——MATLAB实现

    一.引入 对于多项式而言,要计算时的函数值时,需要进行次乘法和n次加法,其时间复杂度为. 那我们该用一个什么用的方式来降低其时间复杂度呢? (1条消息) 一套图 搞懂"时间复杂度" ...

  5. 整数反转----秦九昭算法

    题意 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果. 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0. 假设环境不允许存储 ...

  6. 计算多项式的值(秦九昭算法,clock()函数的使用)

    /* clock()函数使用模板clock():捕捉从程序开始运行到clock()被调用所消耗的时间.这个时间单位是clock tick. 常数CLK_TCK:机器时钟每秒所走的时钟打点数 clock ...

  7. 秦九昭算法(霍尔(Horner)法则)

      求下面式子的和: a0x0+a1x1+...+anxna_0x^0+a_1x^1+...+a_nx^na0​x0+a1​x1+...+an​xn   如果我们按部就班的算,那么我们需要n(n+1) ...

  8. c/c++ 秦九昭算法

    例:1010(二进制)一共4位,我们分解为4步. 一:0(第零位数)*2+1(第一位数)=1(运行数) 二:1(运行数)*2+0(第二位数)=2(运行数) 三:2(运行数)*2+1(第三位数)=5(运 ...

  9. 秦九邵算法计算多项式(C语言实现)

    秦九邵算法计算多项式程序(C语言实现) #include<iostream> #include<cstdio> using namespace std; double algr ...

最新文章

  1. 手动配置 ESXi 主机挂载 NFS 的最大值
  2. 第五天2017/04/06(上午:文件的“读写操作”)
  3. 马匹赛跑java_java模拟龟兔赛跑
  4. 从python入门到放弃_《Python3从入门到放弃》视频教程
  5. 宁德时代811电芯初现真容 搭配宝马X1混动汽车能量密度提升近6成
  6. BZOJ 1062 糖果雨
  7. ueditor-图片上传是报错
  8. 440 亿美元成交!Twitter 「卖身」马斯克
  9. 登录验证,如果输入错误次数超过3次,则锁定该账户
  10. C语言中空白字符与空字符的区别
  11. CAD数字签名的实现
  12. 利用Hbuilder + Android Studio 制作安卓APP
  13. Tecplot中自定义函数
  14. logback filter过滤器简介说明
  15. C# 读取CSV文件
  16. [ZT]JavaScript+div实现模态对话框[修正版]
  17. 2021年年末全国男女比例数据公布
  18. 快手引流卖什么暴利?很多人现在都觉得在各大平台引流很难
  19. eclipse卡死未响应的解决办法
  20. L2-constrained Softmax Loss for Discriminative Face Verification

热门文章

  1. 怎么在vue中发起数据请求
  2. 洛谷 P3258 松鼠的新家 题解
  3. 贪心(基于检索式问答系统)
  4. sps和pps一篇好的解释
  5. 关于计算机专业演讲稿,计算机专业组长竞聘演讲稿
  6. 【图片选择】Android 仿微信图片选择器疾风加载 (单选,多选,相机)--唯剑做伴且随疾风前行
  7. 五年级信息技术上册教案计算机主机探秘,三年级信息技术第三课操作计算机教学设计...
  8. 离散数学学习笔记——第八讲——图论基础(7.1图的基本概念和性质——4.子图和补图)
  9. 方舟手游服务器信息介绍,方舟生存进化手机版PVX服务器介绍 PVX服务器玩法
  10. 2020北京考研英语一80+经验