【BZOJ】3751: [NOIP2014]解方程
题意
求\(\sum_{i=0}^{n} a_i x^i = 0\)在\([1, m]\)内的整数解。(\(0 < n \le 100, |a_i| \le 10^{10000}, a_n \neq 0, m \le 1000000\))
分析
神题。
题解
我们可以取几个质数然后对应取模来计算即可。可是在经过变态的加强数据后,不是tle就是wa。
于是我们可以用一个正确率很低的优化。
令$f(x, p) = \sum_{i=0}^{n} a_i x^i \pmod{p} \(,容易知道\)f(x, p) = f(x \ mod \ p, p)\(,所以我们取一些较小的\)p\(,暴力预处理一下然后\)O(1)$就可以判断了。
最后为了提高正确率,我们再将验证通过的数再用大质数验证一次。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int p[4]={11261, 14843, 21893, 9851197}, f[25005][3], n, m, a[105][4], ans[1000015];
int main() {
scanf("%d%d", &n, &m);
for(int i=0; i<=n; ++i) {
char c=getchar();
int f=1;
for(; c<'0'||c>'9'; c=getchar()) {
if(c=='-') {
f=-1;
}
}
for(; c>='0'&&c<='9'; c=getchar()) {
for(int k=0; k<4; ++k) {
a[i][k]*=10;
a[i][k]+=c-'0';
a[i][k]%=p[k];
}
}
if(f==-1) {
for(int k=0; k<4; ++k) {
a[i][k]=p[k]-a[i][k];
}
}
}
for(int k=0; k<3; ++k) {
for(int x=1; x<p[k]; ++x) {
for(int i=0, now=1; i<=n; ++i, now=now*x%p[k]) {
f[x][k]+=now*a[i][k]%p[k];
if(f[x][k]>=p[k]) {
f[x][k]-=p[k];
}
}
}
}
int cnt=0;
for(int i=1; i<=m; ++i) {
bool flag=1;
for(int k=0; k<3; ++k) {
if(f[i%p[k]][k]) {
flag=0;
break;
}
}
if(flag) {
int ret=0;
for(int j=0, now=1; j<=n; ++j, now=(ll)now*i%p[3]) {
ret+=(ll)now*a[j][3]%p[3];
if(ret>=p[3]) {
ret-=p[3];
}
}
if(ret==0) {
ans[cnt++]=i;
}
}
}
printf("%d\n", cnt);
for(int i=0; i<cnt; ++i) {
printf("%d\n", ans[i]);
}
return 0;
}
【BZOJ】3751: [NOIP2014]解方程的更多相关文章
- BZOJ 3751: [NOIP2014]解方程 数学
3751: [NOIP2014]解方程 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3751 Description 已知多项式方程: ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
- bzoj 3751: [NOIP2014]解方程
Description 已知多项式方程: a0+a1x+a2x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 解题报告: 这题比较诡,看到高精度做不了,就要想到 ...
- bzoj 3751: [NOIP2014]解方程【数学】
--我真是太非了,自己搞了7个质数都WA,从别人那粘5个质数就A了-- 就是直接枚举解,用裴蜀定理计算是否符合要求,因为这里显然结果很大,所以我们对多个质数取模看最后是不是都为0 #include&l ...
- 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】
3751: [NOIP2014]解方程 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4856 Solved: 983[Submit][Status ...
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- [NOIP2014]解方程
3732 解方程 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入描述 Input Descrip ...
- [BZOJ3751][NOIP2014] 解方程
Description 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m,每两个 ...
- 【bzoj3751】[NOIP2014]解方程 数论
题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...
随机推荐
- Matlab中double,im2double,mat2gray区别
转载:http://blog.sina.com.cn/s/blog_6c41e2f30101559d.html ****************假设某图像数据A(uint8格式)*********** ...
- Solr学习总结(二)Solr的安装与配置
接着前一篇,这里总结下Solr的安装与配置 1.准备 1.安装Java8 和 Tomcat9 ,java和tomcat 的安装这里不再重复.需要注意的是这两个的版本兼容问题.貌似java8 不支持,t ...
- oracle 11g express 快速入门
创建表空间CREATE TABLESPACE testdb LOGGING DATAFILE 'F:\oracle\app\oracle\oradata\XE\testdb.dbf' SIZE 100 ...
- [NHibernate]一对多关系(级联删除,级联添加)
目录 写在前面 文档与系列文章 一对多关系 一个例子 级联删除 级联保存 总结 写在前面 在前面的文章中,我们只使用了一个Customer类进行举例,而在客户.订单.产品中它们的关系,咱们并没有涉及, ...
- tyvj1294 小v的舞会
背景 "梦中伊人,断我男儿几寸柔肠,于断桥,不知西风自憔悴那姑娘."小v的梦中伊人要带领一大帮姐妹MM们来小v家举办舞会,然而怎么安排跳舞的顺序成了大问题,你能帮他么? 描述 有n ...
- Navigation Bar options for Android (based on photosomething project)
1, Tab控件即标签页,可以在一页中切换显示n页内容,要使用此效果,需要用到TabHost和Tabwidget类.(过时了?) Tab控件具有两种实现过程,一是在同一个Activity中切换显示不同 ...
- MySQL 的 find_in_set 函数使用方法
举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文...1,12,13 等等 . 现在有篇文章他既是 头条,又是热点,还是图文, type中以 1, ...
- EF Code First 常用命令
1.Enable-Migrations 开启版本库 2. Add-Migration addname 新增版本 3.Update-Database –TargetMigration: addname ...
- python嵌套函数、闭包与decorator
1 一段代码的执行结果不光取决与代码中的符号,更多地是取决于代码中符号的意义,而运行时的意义是由名字空间决定的.名字空间是在运行时由python虚拟机动态维护的,但是有时候我们希望能将名字空间静态化. ...
- 【GoLang】golang 中 defer 参数的蹊跷
参考资料: http://studygolang.com/articles/7994--Defer函数调用参数的求值 golang的闭包和普通函数调用区别:http://studygolang.com ...