NOIP 2014 解方程
描述
已知多项式方程:
a0+a1x+a2x2+...+anxn=0
求这个方程在[1, m]内的整数解(n 和 m 均为正整数)。
格式
输入格式
输入共 n+2 行。
第一行包含 2 个整数 n、m,每两个整数之间用一个空格隔开。
接下来的 n+1 行每行包含一个整数,依次为a0,a1,a2,...,an
。
输出格式
第一行输出方程在[1, m]内的整数解的个数。
接下来每行一个整数,按照从小到大的顺序依次输出方程在[1, m]内的一个整数解。
样例1
样例输入1
2 10 1 -2 1
样例输出1
1 1
样例2
样例输入2
2 10 2 -3 1
样例输出2
2 1 2
样例3
样例输入3
2 10 1 3 2
样例输出3
0
限制
对于 30%的数据,0 < n ≤ 2, |ai|
≤ 100,an
≠ 0, m ≤ 100;
对于 50%的数据,0 < n ≤ 100, |ai|
≤ 10100
,an
≠ 0,m ≤ 100;
对于 70%的数据,0 < n ≤ 100, |ai|
≤ 1010000
,an
≠ 0,m ≤ 10000;
对于 100%的数据,0 < n ≤ 100, |ai|
≤ 1010000
,an
≠ 0,m ≤ 1000000。
来源
NOIP2014 提高组 Day2
今天重新做了一下NOIP原题,当时啥也不会,就直接输出0,搞了10分,今天看看撑死也就30,50了,用了网上的一种hash法勉强搞到70分,AC的还未看懂,下面给个标准的题解吧,争取早日理解。
30% : 穷举x,判断等式是否成立。
50% : 在30%的做法中加入高精度乘法,加法。不用高精减的原因是,只要把符号相同的项移到等式一边,最后再计算等式两边数值是否相等。同时记得要写秦九韶(霍纳法则)优化。
70% : 根据同余的性质,同余符号两边可以支持同加一个数,同乘一个数。那么可以对等式两边同时对一个数取模,如果同余符号成立,那么原等式有可能成立,反之则筛掉该x。在实际操作时对ai用一个素数取模,然后再穷举x,一边取mod一边运算。于是就可以把单次检验复杂度降为O(n)
复杂度 : O(nm)
100% : 根据二项式定理,f(x+p)在展开后必然可以整理成f(x)+T,其中T为关于p的一个多项式,而在同余(mod p)的环境下,T是可以忽略的,也就是说,那么事实上f(x) mod p就是在[1,m]上的周期函数,那么我们只要预处理出f(0)~f(p-1),就相当于知道了f(x) mod p在该区间上的全部情况。于是我们对上述算法优化,从选一个质数改为选取多个小质数pi进行验证,对每一个pi进行0~(pi-1)的预处理后,就可以筛掉一些x。最后输出剩下的x。
复杂度 : O(+m)
转载于:https://www.cnblogs.com/CXCXCXC/p/4652818.html
NOIP 2014 解方程相关推荐
- [NOIp提高组2014]解方程
题目大意 求方程 \[ \sum_{i=0}^{n}a_ix^i=0 \] 在\([1,m]\)内的整数解 \(1 \leq |a_i| \leq 10^{10000},a_i\neq 0,1 \le ...
- 洛谷 题解 P2312 【解方程】
Problem P2312 [解方程] >>> record 用时: 1166ms 空间: 780KB(0.76MB) 代码长度: 2.95KB 提交记录: R9909587 > ...
- python解复杂方程_Python数据处理篇之Sympy系列(五)---解方程
前言 sympy不仅在符号运算方面强大,在解方程方面也是很强大. 本章节学习对应官网的:Solvers 官方教程 (一)求解多元一次方程-solve() 1.说明: 解多元一次方程可以使用solve( ...
- java2的7次方怎么表示_python编程解方程第二弹:10行代码解二次方程(纯字符)...
用纯字符串格式来记录二次方程: '3x^2-10x-8=0' 'x^2-2x+1=0' '3x^2+14x+8=0' 'x^2=9' 二次方怎么表示呢?比如上面的^表示法,或者是python风格的** ...
- 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】
3751: [NOIP2014]解方程 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 4856 Solved: 983 [Submit][Stat ...
- 10.24T3 解方程 取模意义下运算+秦九韶算法
#1228 解方程 描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入 输入共n + 2 行. 第一行包含2 ...
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- 重根迭代法解方程(两种方法)(Python实现)
简述 通过两种不同的重根迭代的来解方程. 处理的方程是 (sin(x) - x/2) ^2 = 0 代码 采用的第一种迭代重根迭代方法: xk+1=xk−mf(xk)f′(xk)xk+1=xk−mf( ...
- 【PC工具】如何简单粗暴无脑的解方程
都2020年了(二十一世纪快中叶了): 信息时代这么多年了,已经进入云计算时代了: 电脑都会下围棋了: 火箭都能回收了: ... 那么 问题就来了:我们是不是还要用手解方程呢?电脑能不能给爷(我)解方 ...
最新文章
- LightTools( 32-64) 8.4.0下载与安装方法,lighttools免费版,lighttools(光学建模软件)【亲测有效】
- Fragment实现的底部导航
- HTML5 进阶系列:拖放 API 实现拖放排序
- EOJ_1049_三元组稀疏矩阵相加
- LeetCode-14 最长公共前缀
- 阿里大神最佳总结Flutter进阶学习笔记,技术详细介绍
- 令人拍案叫绝的EfficientNet和EfficientDet
- Oracle中一般游标与REF游标的区别
- WF4 常用类第二篇
- MySQL怎么卸载干净重装?
- R语言期末试题-重庆工商大学-统计学课程
- el-scrollbar 优化滚动条样式
- UCloud宗泽:区块链安全现状堪忧,泡沫与价值并存
- Rainmeter音频频谱插件分享
- 力天创见客流统计分析系统
- 树莓派4通过华为ME909S 4G模块连接蜂窝网(非PPP)
- oracle 全文索引 优化,通过案例学调优之--Oracle 全文索引
- Cadence IC 617 虚拟机安装使用说明
- 如何解决Myeclipse不能自动编译
- 如何合并pdf文件?多pdf文件合并技能分享