[NOIP2014]解方程

输入文件名为equation.in。
输入共n+2行。
第一行包含2个整数n、m,每两个整数之间用一个空格隔开。
接下来的n+1行每行包含一个整数,依次为a0,a1,a2,……,an。
输出文件名为equation.out。
第一行输出方程在[1, m]内的整数解的个数。
接下来每行一个整数,按照从小到大的顺序依次输出方程在[1, m]内的一个整数解。
|
equation.in |
equation.out |
|
2 10 1 -2 1 |
1 1 |
|
equation.in |
equation.out |
|
2 10 2 -3 1 |
2 1 2 |
|
equation.in |
equation.out |
|
2 10 1 3 2 |
0 |

分类标签 Tags 点此展开
/*
嗯rp很重要.(RP++).
这题是要求[1,m]区间中的合法解.
然而m是一个非常大的数.
不考虑精度问题枚举的话o(nm)应该是可行的
(FFT压位我真是太机智了哈哈哈哈哈哈哈)
(画外音:10^10000压位+处理应该会T吧orz)
so我们考虑这个方程在剩余系意义下的解.
(ax)%p等价于(ax+p)%p.
我们mod两个prime.
因为mod一个prime的解可能不充分.
最后从[1,m]中扫一遍合法解.
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#define MAXN 201
#define MAXM 1000001
#define LL long long
using namespace std;
int n,m,ans,p[];
LL a[][MAXM];
bool b[MAXM];
char s1[MAXM];
void slove1(char s[],int l,int k)
{
bool flag=false;
int x;
for(int i=;i<=;i++)
{
x=;
if(s[]=='-') x=,flag=true;
while(x<l) a[i][k]=(a[i][k]*%p[i]+s[x]-)%p[i],x++;
if(flag) a[i][k]=p[i]-a[i][k];//负数.
}
}
bool check(int x,int k)
{
LL tot=,w=;
for(int i=;i<=n;i++)
tot=(tot+a[k][i]*w%p[k])%p[k],w=(w*x)%p[k];
return tot%p[k];
}
void slove()
{
for(int i=;i<=p[];i++)
{
if(check(i,)) continue;
for(int j=i;j<=m;j+=p[])
if(!check(j,)) b[j]=true;
}
int tot=;
for(int i=;i<=m;i++)
if(b[i]) tot++;
printf("%d\n",tot);
for(int i=;i<=m;i++)
if(b[i]) printf("%d\n",i);
}
int main()
{
p[]=,p[]=;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
cin>>s1;
int l=strlen(s1);
slove1(s1,l,i);
}
slove();
return ;
}
[NOIP2014]解方程的更多相关文章
- 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】
3751: [NOIP2014]解方程 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4856 Solved: 983[Submit][Status ...
- BZOJ 3751: [NOIP2014]解方程 数学
3751: [NOIP2014]解方程 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3751 Description 已知多项式方程: ...
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
- [BZOJ3751][NOIP2014] 解方程
Description 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m,每两个 ...
- NOIP2014解方程
题目:求一个n次整系数方程在1-m内的整数解 n<=100 系数<=10000位 m<=100W 题解:最暴力的想法是枚举x,带入求值看是否为0. 这样涉及到高精度乘高精度,高精度 ...
- [BZOJ3751] [NOIP2014] 解方程 (数学)
Description 已知多项式方程:$a_0+a_1*x+a_2*x^2+...+a_n*x^n=0$ 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m ...
- bzoj 3751: [NOIP2014]解方程
Description 已知多项式方程: a0+a1x+a2x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 解题报告: 这题比较诡,看到高精度做不了,就要想到 ...
- 【bzoj3751】[NOIP2014]解方程 数论
题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...
随机推荐
- h5-4 canvas
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- linux学习资料
鸟哥的Linux私房菜 基础学习篇(第三版) http://book.51cto.com/art/201007/211888.htm 鸟哥的Linux私房菜——服务器架设篇 http:// ...
- Java再学习——随机面试题
1.final, finally, finalize的区别 final—是修饰符,可以修饰变量.方法和类. final类不能再派生出新的子类即不可当父类: final变量必须在声明时给定初值或在构造方 ...
- 关于消除MySQL输入错误后的警报声
找到mysql安装目录中的 my.ini 配置文件,在[mysql]行的下面加入一行 no-beep 即可消除声音. [mysql] no-beep default-character-set=gb2 ...
- 关于Android悬浮窗要获取按键响应的问题
要在Android中实现顶层的窗口弹出,一般都会用WindowsManager来实现,但是几乎所有的网站资源都是说弹出的悬浮窗不用接受任何按键响应. 而问题就是,我们有时候需要他响应按键,比如电视上的 ...
- Foundation学习笔记
. 链接:Foundation学习,代码实例总结(pdf版) .
- [Java] SSH框架笔记_框架分析+环境搭建+实例源码下载
首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...
- js技巧总结
很早以前看到的代码,同时加上一些我在项目中用到的代码,感觉很实用,在这里记录下来,怕忘记了,有些代码忘记在哪看到的了,所以就不贴网址了,感谢各位大神的分享!如果有其他的好的方法,欢迎留言~ 1.取整的 ...
- Gvim 在进行文件对比时报cannot read or write temp files
本机环境为win7 64位旗舰版,gvim安装的是GVim7.4.解决办法如下: 在安装目录下有个"_vimrc"文件.修改19行.将 if &sh =~ '\<cm ...
- BI中PowerDesigner建模
PowerDesigner下载: http://pan.baidu.com/share/link?shareid=296749&uk=1479845243