洛谷P2312解方程题解

时间:2022-09-11 22:51:06

题目

暴力能得\(30\),正解需要其他的算法操作,算法操作就是用秦九韶算法来优化。

秦九韶算法就是求多项式的值时,首先计算最内层括号内一次多项式的值,然后由内向外逐层计算一次多项式的值,然后就将求\(n\)次多项式的算法转化为求\(n\)个一次多项式的算法。

但是这样只能得到30分,用高精也只能拿50分,所以此时可以用模数意义下的\(hash\)来解决,设置模数为1e9+7(或者其他比较大的模数),就可以来优化时间,虽然有很可能会错,但是还是可以用很快的时间来解决,且错的几率是非常的小的。

#include <bits/stdc++.h>
#define N 100100
#define mod 1000000007
#define ll long long
using namespace std;
ll n, m, ans, a[N], x[N];
bool flag = 0;
inline ll read()
{
char ch; ll sum = 0, fu = 1; ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') fu = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
sum = ( (sum * 10) + ch - '0') % mod;
ch = getchar();
}
return sum * fu;
}
bool check(ll now) {
ll sum = 0;
for (int i = n; i >= 0; i--)
sum = ( (sum + a[i]) * now ) % mod;
if (sum) return 0;
else return 1;
}
int main()
{
scanf("%lld%lld", &n, &m);
for (int i = 0; i <= n; i++)
a[i] = read();
/*
for (int i = 0; i <= n; i++)
printf("%lld ", a[i]);
*/
for (int i = 1; i <= m; i++)
if ( check (i) )
x[++ans] = i, flag = 1;
if (!flag)
printf("0"), exit(0);
printf("%lld\n", ans);
for (int i = 1; i <= ans; i++)
printf("%lld\n", x[i]);
}

洛谷P2312解方程题解的更多相关文章

  1. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  2. 洛谷 P2312 解方程 题解

    P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为 ...

  3. 洛谷 P2312 解方程 解题报告

    P2312 解方程 题目描述 已知多项式方程: \(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\)求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整 ...

  4. 洛谷 P2312 解方程

    题目 首先,可以确定的是这题的做法就是暴力枚举x,然后去计算方程左边与右边是否相等. 但是noip的D2T3怎么会真的这么简单呢?卡常卡的真是熟练 你需要一些优化方法. 首先可以用秦九韶公式优化一下方 ...

  5. &lbrack;NOIP2014&rsqb; 提高组 洛谷P2312 解方程

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...

  6. 2018&period;11&period;02 洛谷P2312 解方程(数论)

    传送门 直接做肯定会TLETLETLE. 于是考验乱搞能力的时候到了. 我们随便选几个质数来checkcheckcheck合法解,如果一个数无论怎么checkcheckcheck都是合法的那么就有很大 ...

  7. 洛谷P2312 解方程 &lbrack;noip2014&rsqb; 数论

    正解:数论 解题报告: 这儿是,传送门qwq 又是很妙的一道题呢,专门用来对付我这种思维僵化了的傻逼的QAQ 首先看题目的数据范围,发现a<=1010000,很大的一个数据范围了呢,那这题肯定不 ...

  8. 洛谷P2312解方程

    传送门 思路分析 怎么求解呢? 其实我们可以把左边的式子当成一个算式来计算,从1到 $ m $ 枚举,只要结果是0,那么当前枚举到的值就是这个等式的解了.可以通过编写一个 $ bool $ 函数来判断 ...

  9. 洛谷P2312 解方程&lpar;暴力&rpar;

    题意 题目链接 Sol 出这种题会被婊死的吧... 首先不难想到暴力判断,然后发现连读入都是个问题. 对于\(a[i]\)取模之后再判断就行了.注意判断可能会出现误差,可以多找几个模数 #includ ...

随机推荐

  1. Android常见控件— — —ProgressBar

    ProgressBar用于在界面上显示一个进度条,表示我们的程序正在加载一些数据. <?xml version="1.0" encoding="utf-8&quot ...

  2. 深入浅出Java并发包—锁机制&lpar;二&rpar;

    接上文<深入浅出Java并发包—锁机制(一)  >  2.Sync.FairSync.TryAcquire(公平锁) 我们直接来看代码 protected final boolean tr ...

  3. Type mytableview does not confirm to portocol UITableViewDataResource

    继承UITableViewDataSource报上面这个总是,是重写协议时写错了 override func numberOfRowsInSection(section: Int) -> Int ...

  4. System Operations on AWS - Lab 6W - Using Auto Scaling &lpar;Windows&rpar;

    创建你的一个web server,然后将这个实例制成你的AMI,通过启动配置生成一个Auto Scaling组(包括scale-in/scale-out策略),配置一台Load Balancer指向你 ...

  5. 【转】android UI进阶之实现listview中checkbox的多选与记录--不错

    原文网址:http://www.cnblogs.com/notice520/archive/2012/02/17/2355415.html 今天继续和大家分享涉及到listview的内容.在很多时候, ...

  6. Android屏幕适配与切图&lowbar;汇总

    首先和最后,还是先看好官方文档:http://developer.android.com/guide/practices/screens_support.html 对应的翻译blog有牛人做了:And ...

  7. 采用translate实现垂直水平居中

    今天分享一个利用css3新特性实现垂直水平居中的方法. 通过对元素进行绝对定位再配合transform中的translate实现. 代码如下: html <div id="conten ...

  8. &lbrack;模板&rsqb;ETT

    解:splay维护括号序列,就是进子树一次出子树一次.树上每个点直接记录这两个点的编号. 建树的时候按照分配的编号建树. #include <bits/stdc++.h> typedef ...

  9. ss源码学习--事件处理

    为了方便区分,以下分别使用local,server,remote代表ss客户端,ss服务端,以及ss客户端请求访问的远程主机. 在*中,无论对于local还是server,都需要建 ...

  10. Window服务与Quartz&period;NET

    Quartz.NET: http://quartznet.sourceforge.net/ (现为2.2版本) Sourceforge:http://sourceforge.net/projects/ ...