首页 > 编程语言 >秦九韶算法学习笔记

秦九韶算法学习笔记

时间:2024-01-13 10:22:36浏览次数:33  
标签:ch ll 笔记 算法 秦九韶 sum Mod

快速求多项式 —— 秦九韶算法

计算 \(\sum^n_i{a_i \times x^i}\) 的值。

1. 朴素算法

算出每一项的值再相加,总共要进行 \(\frac{n(n + 1)}{2}\) 次乘法,\(n\) 次加法。

2. 秦九韶算法

\(a_0 + a_1x + a_2x^2 + \dots a_n x^n = (((a_nx + a_{n - 1})x + a_{n - 2}\dots)x + a_1)x + a_0\) 可以只进行 \(n\) 次乘法,\(n\) 次加法,大大降低了时间复杂度。

例题

题目描述

已知多项式方程:

\[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0 \]

求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整数)。
对于 \(100\%\) 的数据:\(0<n\le 100,|a_i|\le 10^{10000},a_n≠0,m<10^6\) 。

对于这道题我们可以利用秦九韶算法求解,枚举 \([1, m]\) 的每一个数,然后将其带入多项式求值,最终如果结果为 \(0\),就记录答案。


#include <bits/stdc++.h>
#define ll long long
using namespace std;

const ll Mod = 1e9 + 7;

inline ll read(){
  	ll f = 1,x = 0;
  	char ch = getchar();
  	while(!isdigit(ch)){
		if(ch == '-')f = -1;
  		ch = getchar();
  	}
  	while(isdigit(ch)){
  		x = (x << 1) + (x << 3) + (ch ^ 48);
  		x %= Mod;
  		ch = getchar();
  	}
  	return x * f;
}
inline void print(int x){
  	if(x > 9)print(x / 10);
  	putchar(x % 10 + '0');
}

ll a[101];
int n, m;

bool check(ll x){
	ll sum = 0;
	for(ll i = n; i >= 1; i--)
		sum = ((a[i] + sum) % Mod * x) % Mod;
	sum = (sum + a[0]) % Mod;
	return !(sum);
}

ll ans[1000010], tot = 0;

signed main(){	
	cin >> n >> m;
	for(int i = 0; i <= n; i++){
		a[i] = read();
	}
	for(ll i = 1; i <= m; i++){
		if(check(i))ans[++tot] = i;
	}
	cout << tot << endl;
	for(int i = 1; i <= tot; i++){
		cout << ans[i] << endl;
	}
  	return 0;
}

标签:ch,ll,笔记,算法,秦九韶,sum,Mod
From: https://www.cnblogs.com/lightstarup/p/17962070

相关文章

  • 读元宇宙改变一切笔记06_虚拟世界引擎
    1. 一棵虚拟的树在虚拟森林里倒下了!1.1. 它们都是数据和代码1.2. 数据可以描述虚拟对象的属性1.2.1. 尺寸或颜色1.3. 为了让我们的树由CPU处理并由GPU渲染,这些数据需要通过代码运行1.4. 该代码必须是运行虚拟世界的更广泛代码框架的一部分2. 现实世界2.1. 现实世......
  • [RFC6238] TOTP: 基于时间的一次性密码生成算法
    原创 给我馍馍 给我馍馍 2019-03-2822:42在闲暇时间做了一个TOTP相关的开源项目,在项目初步完成之余,我尝试对[RFC6238]文档进行了翻译,供大家参考与查阅,若有不妥之处,还望各位前辈海涵斧正。 生活中我们会经常使用到TOTP的算法应用,如银行的动态口令器、网络游戏中的将军令、......
  • 【opencv学习笔记】028之模板匹配——matchTemplate函数详解
    目录​ ​一、前言​​​ ​二、模板匹配​​​ ​1、模板匹配是个啥​​​ ​2、常用匹配算法​​​​ ​3、API​​​ ​4、代码展示​​​ ​5、执行结果​​一、前言遭遇了点突发情况,所以今天更新的有点晚,也不知道能不能等到今天发出去了。终于可以从模板匹......
  • 荣耀笔记本锐龙版 网络连接不上怎么办?
    我的电脑型号:荣耀MagicBookPro2020锐龙版R5集显16GB+512GB(HYLR-WFQ9)背景:我的电脑是荣耀锐龙版的,本来是买了个网线的转接口连接有线的,但是一直连接不上。于是想下载一个鲁大师来更新下驱动,怀疑是驱动问题。升级的时候,不小心把wifi的网线升级了。升级的过程中,赶时......
  • 学习笔记3
    RDD概念/特性许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘工具,共同之处是不同计算阶段之间会重用中间结果,MapReduce框架把中间结果写入到稳定存储(如磁盘)中,带来大量的数据复制、磁盘IO和序列化开销。RDD就是为了满足这种需求而出现的,它提供了一个抽象的数据架构,开发者......
  • Python第一天学习笔记
    今日学习内容1.什么是编程2.计算机组成原理3.计算机操作系统4.编程语言是什么什么是编程什么是编程语言编程语言是什么:人与计算机交流的介质什么是编程编程:利用编程语言写出一个个文件,这堆文件会达到一个目的编程有什么用就像近代奴隶主奴役黑奴干活一样,我们的目的是奴......
  • 刷题笔记——队列(C++)
    1696.跳跃游戏VI-力扣(LeetCode)给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i+1,min(n-1,i+k)] 包含 两个端点的任意位置。你的目标是......
  • 文心一言 VS 讯飞星火 VS chatgpt (177)-- 算法导论13.3 6题
    六、用go语言,说明如果红黑树的表示中不提供父指针,应当如何有效地实现RB-INSERT。文心一言:红黑树是一种自平衡的二叉搜索树,其中每个节点都包含一个颜色属性(红色或黑色),并且满足以下性质:节点是红色或黑色。根节点是黑色。所有叶子节点(NIL或空节点)都是黑色。如果一个节点是红色的,则......
  • 读元宇宙改变一切笔记06_虚拟世界引擎
    1. 一棵虚拟的树在虚拟森林里倒下了1.1. 它们都是数据和代码1.2. 数据可以描述虚拟对象的属性1.2.1. 尺寸或颜色1.3. 为了让我们的树由CPU处理并由GPU渲染,这些数据需要通过代码运行1.4. 该代码必须是运行虚拟世界的更广泛代码框架的一部分2. 现实世界2.1. 现实世......
  • 学习进度笔记3
    今天与小组成员进行了讨论,确定了最终的选题和小组成员,我们修改了选题为医疗保险欺诈识别监测模型要求:开发一套医疗保险欺诈识别监测模型,帮助医保部门实现对各类医疗保险基金欺诈违规行为的准确识别,以进一步丰富现行医保智能监控的医保规则和医学规则,提高医保智能监控的针对性和......