[noip2014]P2312 解方程
P2312 解方程
其实这道题就是求一个1元n次方程在区间[1, m]上的整数解。
我们枚举[1, m]上的所有整数,带进多项式中看看结果是不是0即可。
这里有一个技巧就是秦九韶算法,请读者自行查看学习。
时间复杂度O(n*m)。
然后你应该可以拿30分。
我们发现这些数都太大了,要开高精度。然后你愉快地拿了50分——复杂度O(n*m*length)会爆炸。
这里我们考虑hash的思想,对结果取模(最好是一个很大的质数P),如果结果是零就说明这是一个解。
应为如果结果是零,那么要么这是一个解,要么结果是p的倍数(这样的概率很小,小到不需要考虑)。
如果你运气真的不好,就多试几个不同的质数。如果这还不行,你就可以去买彩票了
#include <iostream>
using namespace std;
const long long p = 1e9 + ; long long n, m, a[], ans[], cnt; long long read() {
//读入时要取模
long long ret = , f = ;
char ch = getchar();
while (!isdigit(ch)) {
if (ch == '-') f = -;
ch = getchar();
}
while (isdigit(ch)) {
ret = (ret * + ch - '') % p;
ch = getchar();
}
return ret * f;
} int main() {
cin >> n >> m;
for (long long i = ; i <= n; i++) {
a[i] = read();//这里不能直接读入(这不是快读)
}
for (long long i = ; i <= m; i++) {
long long x = i, fx = ;
//秦九韶算法
for (long long j = n; j >= ; j--) {
fx = ((a[j] + fx) * x) % p;
}
if (fx == ) {
ans[++cnt] = x;
}
}
cout << cnt << endl;
for (long long i = ; i <= cnt; i++) {
cout << ans[i] << endl;
}
return ;
}
[noip2014]P2312 解方程的更多相关文章
- codevs3732==洛谷 解方程P2312 解方程
P2312 解方程 195通过 1.6K提交 题目提供者该用户不存在 标签数论(数学相关)高精2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 已知多项式方程: a ...
- bzoj3751 / P2312 解方程
P2312 解方程 bzoj3751(数据加强) 暴力的一题 数据范围:$\left | a_{i} \right |<=10^{10000}$.连高精都无法解决. 然鹅面对这种题,有一种常规套 ...
- 洛谷 P2312 解方程 解题报告
P2312 解方程 题目描述 已知多项式方程: \(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\)求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整 ...
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- 洛谷 P2312 解方程 题解
P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为 ...
- P2312 解方程(随机化)
P2312 解方程 随机化的通俗解释:当无法得出100%正确的答案时,考虑随机化一波,于是这份代码很大可能会对(几乎不可能出错). 比如这题:把系数都模一个大质数(也可以随机一个质数),然后O(m)跑 ...
- 【NOIP2014】解方程
题目描述 已知多项式方程 \[a_0 + a_1x + a_2x^2 + \dots +a_nx^n=0\] 求这个方程在\([1,m]\)内的整数解(\(n\)和\(m\)均为正整数). 输入输出格 ...
- [NOIP2014] 提高组 洛谷P2312 解方程
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
- 洛谷P2312 解方程 [noip2014] 数论
正解:数论 解题报告: 这儿是,传送门qwq 又是很妙的一道题呢,专门用来对付我这种思维僵化了的傻逼的QAQ 首先看题目的数据范围,发现a<=1010000,很大的一个数据范围了呢,那这题肯定不 ...
随机推荐
- The Last Puzzle ZOJ - 3541
题目链接 本题也是区间dp,贪心可证,每一次出发必定是从端点,否则必然有重复,不会是最小值,那我们可以设dpi,j,0/1,0代表从左端点出发,1代表从右端点,因为每次都是从端点出发,状态方程为 dp ...
- 解决xpath中文乱码
利用xpath建标签树以后,虽然提高了元素匹配效率,但是etree会把中文转为ASCII码,所以简单地tostring以后会有乱码. 解决方法: import requests from reques ...
- C/C++网络编程9——多进程服务器端实现
#include <iostream> #include <unistd.h> #include <cstdlib> #include <arpa/inet. ...
- jupyter配置 nbextension
jupyter contrib nbextension install --user --skip-running-check No module named 'pysqlite2' 解决方法:打开此 ...
- 名称空间using namespace std
写再最前面:摘录于柳神的笔记 虽然C++是一门面向对象语言,但是对于刷算法这件事而言,我们并不需要掌握它⾯向对象的部分-只 需要掌握刷算法的时候需要用到的部分(基本输⼊输出.STL标准模板库. str ...
- Java基础 -2.6
String字符串 在任何语言里面 都没有提供所谓的字符串这种基本数据类型,但是从实际的使用上来讲呢,各个编程语言 为了方便程序的开发,也都会提供有字符串的相应描述 在进行字符串变量使用的时候也可以使 ...
- PCSearch需要管理员权限,开机自启
1.添加Windows服务,并设为自动启动: 2.通过服务启动AutoStartSevice.exe,通过AutoStartSevice.exe运行AutoStart.bat,通过AutoStart. ...
- scala的trait执行报错: 错误: 找不到或无法加载主类 cn.itcast.scala.`trait`
scala的trait执行报错: 错误: 找不到或无法加载主类 cn.itcast.scala.`trait`.Children 原因:包名写成了trait,与trait关键字重名了: package ...
- Codeforces Round #581 (Div. 2)D(思维,构造,最长非递减01串)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;char s[100007];int main ...
- Django学习 之 Django安装与一个简单的实例认识
一.Django简介 1.MVC与MTV模型 (1)MVC模型 Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的. ...