洛谷 P2312 解方程 题解
P2312 解方程
题目描述
已知多项式方程:
\]
求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为正整数)。
输入格式
输入共 $ n + 2$ 行。
第一行包含 \(2\) 个整数 \(n, m\) ,每两个整数之间用一个空格隔开。
接下来的 \(n+1\) 行每行包含一个整数,依次为 \(a_0,a_1,a_2\ldots a_n\)。
输出格式
第一行输出方程在 [1,m][1,m] 内的整数解的个数。
接下来每行一个整数,按照从小到大的顺序依次输出方程在 [1,m][1,m] 内的一个整数解。
输入输出样例
输入 #1
2 10
1
-2
1
输出 #1
1
1
输入 #2
2 10
2
-3
1
输出 #2
2
1
2
输入 #3
2 10
1
3
2
输出 #3
0
说明/提示
对于 30%30% 的数据:\(0<n\le 2,|a_i|\le 100,a_n≠0,m<100\)。
对于 50%50% 的数据:\(0<n\le 100,|a_i|\le 10^{100},a_n≠0,m<100\) 。
对于 70%70% 的数据:\(0<n\le 100,|a_i|\le 10^{10000},a_n≠0,m<10^4\) 。
对于 100%100% 的数据:\(0<n\le 100,|a_i|\le 10^{10000},a_n≠0,m<10^6\) 。
【思路】
秦九韶公式 + 快读取模 +数学、数论
【题目大意】
给定范围求范围内方程解的个数
【题目分析】
m<=1e6,可以枚举
所以枚举m是个不错的选择
方程求解?可以代数试一下
但是代数复杂度太高
可以用秦九韶公式分解一下
不会的话可看后面的解释或者百度一下,记住公式就好了挺简单的
降低复杂度
【核心思路】
枚举m
然后去判断一下m是不是方程的解
只需要将m带入方程试一下
注意:
这里的方程式秦九韶公式分解之后的方程
然后计数记录答案最后输出就好了
【秦九韶公式】
\(a_0 + a_1x + a_2x^2 + a_3x^3 + .... + a_nx^n\)
\(=a_0 + x(a_1+a_2x+a_3x^2+....+a_nx^{n-1})\)
\(=....\)
就是上面这个样子
可以化到里面没有几次方
未知数都是多少的1次方的情况
这样就可以减少很多的运算量
【完整代码】
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
const int p = 1e9 + 7;
inline int read()
{
int sum = 0,fg = 1;
char c = getchar();
while(c < '0' || c > '9')
{
if(c == '-')fg = -1;
c = getchar();
}
while(c >= '0' && c <= '9')
{
sum = ((sum * 10) + c - '0') % p;
c = getchar();
}
return sum * fg;
}
int a[105];
int ans[1000006];
int n,m;
bool check(int x)
{
int sum = 0;
for(register int i = n;i >= 1;i --)
{
sum = (x * (a[i] + sum)) % p ;
}
sum = (sum + a[0]) % p;
if(sum == 0)return true;
else return false;
}
signed main()
{
freopen("au.out","r",stdin);
n = read();m = read();
for(register int i = 0;i <= n;++ i)
a[i] = read();
int js = 0;
for(register int i = 1;i <= m;++ i)
if(check(i) == true)
ans[++ js] = i;
cout << js << endl;
for(register int i = 1;i <= js;++ i)
cout << ans[i] << endl;
return 0;
}
洛谷 P2312 解方程 题解的更多相关文章
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- 洛谷P2312解方程题解
题目 暴力能得\(30\),正解需要其他的算法操作,算法操作就是用秦九韶算法来优化. 秦九韶算法就是求多项式的值时,首先计算最内层括号内一次多项式的值,然后由内向外逐层计算一次多项式的值,然后就将求\ ...
- 洛谷 P2312 解方程 解题报告
P2312 解方程 题目描述 已知多项式方程: \(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\)求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整 ...
- 洛谷 P2312 解方程
题目 首先,可以确定的是这题的做法就是暴力枚举x,然后去计算方程左边与右边是否相等. 但是noip的D2T3怎么会真的这么简单呢?卡常卡的真是熟练 你需要一些优化方法. 首先可以用秦九韶公式优化一下方 ...
- [NOIP2014] 提高组 洛谷P2312 解方程
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
- 2018.11.02 洛谷P2312 解方程(数论)
传送门 直接做肯定会TLETLETLE. 于是考验乱搞能力的时候到了. 我们随便选几个质数来checkcheckcheck合法解,如果一个数无论怎么checkcheckcheck都是合法的那么就有很大 ...
- 洛谷P2312 解方程 [noip2014] 数论
正解:数论 解题报告: 这儿是,传送门qwq 又是很妙的一道题呢,专门用来对付我这种思维僵化了的傻逼的QAQ 首先看题目的数据范围,发现a<=1010000,很大的一个数据范围了呢,那这题肯定不 ...
- 洛谷P2312解方程
传送门 思路分析 怎么求解呢? 其实我们可以把左边的式子当成一个算式来计算,从1到 $ m $ 枚举,只要结果是0,那么当前枚举到的值就是这个等式的解了.可以通过编写一个 $ bool $ 函数来判断 ...
- 洛谷P2312 解方程(暴力)
题意 题目链接 Sol 出这种题会被婊死的吧... 首先不难想到暴力判断,然后发现连读入都是个问题. 对于\(a[i]\)取模之后再判断就行了.注意判断可能会出现误差,可以多找几个模数 #includ ...
随机推荐
- -Gradle 翻译 Merge AndroidManifest 合并清单文件 MD
目录 目录 Merge AndroidManifest 合并清单文件 合并多个清单文件 合并优先级 合并冲突启发式算法 合并规则的标记 节点标记 属性标记 Attribute markers 标记选择 ...
- 高并发场景下System.currentTimeMillis()的性能问题的优化
高并发场景下System.currentTimeMillis()的性能问题的优化 package cn.ucaner.alpaca.common.util.key; import java.sql.T ...
- scanf加不加\n?
近两天用vs2013敲代码碰到的问题 关于scanf小括号中加不加\n的区别 例程序如下所示: 第一个程序: int main(){ ; printf("你会去敲代码吗?(选择1 or 0) ...
- CSP J/S 2019受虐记
一枚蒟蒻的游记~ 提高组DAY1 不是说每场考试都有一道签到题吗 那我tm读了三遍题硬是没找到一道水题是怎么回事(是我太弱了吗) 没办法,硬着头皮做T1 暴力写法...期望得分30pts 于是...在 ...
- Matlab策略模式
策略模式的意图是定义一系列算法,把它们一个一个封装起来,并且使它们可以互相替换.通常每个策略算法不可抽象再分.本人仿照https://www.runoob.com/design-pattern/str ...
- npm 安装、卸载 模块或包的命令(转载)
npm安装卸载命令 来源:https://www.jianshu.com/p/e6ee00ea03cd npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目 ...
- sublime text3常用的一些快捷键
--------------------------------下面的内容可以打印出来贴在电脑旁提醒自己-------------------- Ctrl + Shift + D 快速复制当前的一行 ...
- Python 3.6 版本-使用Pytesseract 模块进行图像验证码识别
环境: (1) win7 64位 (2) Idea (3) python 3.6 (4) pip install pillow < >pip install pytesse ...
- php审核流程详解
在公司运营中,人员的变动及请假.离职情况都很普遍,这就需要有一个管理系统来系统的做一套流程,可以提升工作效率节省时间.在流程中需要有顺序的进行提交审核,接下来我们做一套简单的新建流程以及提交审核的系统 ...
- ElasticSearch(十):Elasticsearch集群配置
我本地虚拟机配置了两台centos机器,分别安装了elasticsearch6.4.0版本,IP分别为:192.168.56.12, 192.168.56.13 分别修改两个机器上Elasticsea ...