[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,每两个整数之间用一个空格隔开 ...
随机推荐
- oc-25-id类型
/** id:万能指针 能够指向任何OC对象. id = NSObject *, id cat = [Cat new]; [cat jump]; NSObject:是所有类的父类,基类.可以指向任何O ...
- Kafka删除逻辑
Kafka的删除逻辑请参见:http://www.cnblogs.com/gaopeng527/p/4950956.html
- CefSharp 发布后在客户机上报找不到dll的问题
两个因素:一是与项目平台属性的选择要一致二是需要安装CefSharp对应的的VC++可发行组件包(用包管理器引用了此DLL后,会有一个readme.txt,上面详细介绍了CefSharp所需要的环境要 ...
- DataTable转CSV
直接上方法: /// <summary> /// 将DataTable转换成CSV文件 /// </summary> /// <param name="dt&q ...
- ASP.NET Ajax简单的无刷新分页
最近练习了一些AJAX无刷新分页,写得比较简单,性能不知道怎么样,求大神指点,如有更好的分页提供,欢迎交流! 发话不多说了,直接上代码! 首先从网上下了一个JS分页,感觉挺好用的 (function( ...
- ASP流程控制语句
ASP流程控制语句 1.if...then语句 单行: if 条件 then 语句 多行: if 条件 then elseif 条件 then 语句 elseif 条件 then 语句 else en ...
- android面试
1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚 ...
- Android里viewpager切换页面存在页面不相邻的页面被销毁的问题
我之前一直因为viewpager+fragment时,所有页面的状态都会被自动保存 这次自己做了一个添加了5跟fragment的viewpager 测试时发现当从第一个切换到第四个页面时,再回到第一个 ...
- swift-自定义无限轮播图
一 前言 1.之前一直在用OC编程,最近才开始接触使用swift就发现使用OC越来越不习惯,感觉已经爱上了swift. 2.这个自定义轮播图只是对之前OC版本进行了翻译,欢迎指正. 3.我决定一步步 ...
- 【Unity3D】Unity3D之 Resources.Load 动态加载资源
[Unity3D]Unity3D之 Resources.Load 动态加载资源 1.Resources.Load:使用这种方式加载资源,首先需要下Asset目录下创建一个名为Resources的文件夹 ...