[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,每两个整数之间用一个空格隔开 ...
随机推荐
- vs开发工具之--自动生成注释
GhostDoc是Visual Studio的一个免费插件,轻松一个快捷键CTRL+SHIFT+D就能够帮助自动生成注释 下载地址:http://submain.com/download/ghostd ...
- C++基础之预处理命令
目录 概述——对预处理命令的理解 预处理命令的处理时间 C++中主要的预处理命令 宏定义 “文件包含”处理 选择编译 概述 使用C++的预处理命令可以提高程序的可维护性,有利于程序员以更加方便和快捷的 ...
- 剑指 offer set 4 矩形覆盖
总结 1. 斐波那契数列的变形题, 但是稍有隐晦, 有点意思 2. 求解 f(3) 时, 最后一块矩形可以竖着放, 也可以两块矩形横着放, 分别对应于 f(2) 和 f(1) ------------ ...
- php对比辨析之 mysql_escape_string & mysql_real_escape_string & addsalshes
概述: addslashes和mysql_real_escape_string.都是为了使数据安全的插入到数据库中而进行过滤. addslashes 转义的字符是单引号(').双引号("). ...
- javascript冷知识
本人很少写博客,所以文笔很不好,如果解释的不够清楚的,欢迎点评 1.+号(一元加操作符): 如果放在数值前的话,对数值不会产生任何影响,不过放在其他的数据类型前面的话,就等于调用number()将他转 ...
- ganglia安装-yum
centos6.6 x64 root用户 单机一台,集群中需要监控的安装客户端就可以了 Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点.Ganglia的核 ...
- error和exception的区别,RuntimeException和非RuntimeException的区别
error和exception的区别,RuntimeException和非RuntimeException的区别 1. 异常机制 异常机制是指当程序出现错误后,程序如何处理.具体来说, ...
- Bash中的位置参数和特殊参数
#Bash中的位置参数和特殊参数 #Bash中的位置参数是由0以外的一个或多个数字表示的参数.#位置参数是当Shell或Shell函数被引用时由Shell或Shell函数的参数赋值,并且可以使用Bas ...
- 【Warshall_Floyd】
模板: /* Problem: 任意两点间的最短路 Tips : 可以处理边时负数的情况. 判断图中是否有负圈,只需检查d[i][j]是负数的顶点i就可以. 复杂度 : O(n^3) */ #incl ...
- UIActivityIndicatorView的使用方法(旋转动画)
- (void)viewDidLoad { [super viewDidLoad]; //创建UIActivityIndicatorView并设置样式:WhiteLarge为37 * 37,Gray和 ...