题目:

题目描述

已知多项式方程:

a0+a1x+a2x2+…+anxn=0

求这个方程在[1,m]内的整数解(n 和 m 均为正整数)。

输入格式

输入共 n+2 行。 
第一行包含 2 个整数 n、m,每两个整数之间用一个空格隔开。 
接下来的 n+1 行每行包含一个整数,依次为 a0,a1,a2, … ,an 。

输出格式

第一行输出方程在[1,m]内的整数解的个数。 
接下来每行一个整数,按照从小到大的顺序依次输出方程在[1,m]内的一个整数解。

样例数据 1

输入  [复制]

2 10 

-2 
1

输出

1

题解

  这道题不得不说思想很巧···以前已知没有遇到过···
  首先,如果等式两边模上一个数后依然为0那么原来的等式是有可能成立的··因此我们可以取几个质数然后看每次算完后模这几个质数下来的答案是否都为0,如果是的话说明原来等式可能成立(概率很大)
  但是如果这样从1——m一个一个枚举暴力算还是会超时的···
  我们还可以发现一个性质··就是如果一个x带入等式模质数p为0,那么x+k*p带入肯定等式模质数p肯定也一定为0··因此我们枚举小于质数的数计算即可·····这样复杂度就是k*p*n的,其中p为最大质数的大小··k为选择的质数的数量····注意质数选小一点···10000左右即可
  但这道题我写出来常树很大··怎么优化都不能过bzoj··只能过自己学校的···如果要参考我代码的同学还是算了吧···

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<cstring>
#include<string>
using namespace std;
const int N=1e4+;
const int M=;
const int P=1e6+;
int pri[]={,,,,,};
int a[M][],n,m,pre[][],jud[][],ans[P],cnt=;
char s[N];
inline int R()
{
char c;int f=;
for(c=getchar();c<''||c>'';c=getchar());
for(;c<=''&&c>='';c=getchar()) f=(f<<)+(f<<)+c-'';
return f;
}
inline bool check(int op,int x)
{
long long ans=;
for(register int i=;i<=n;i++)
ans=(ans+pre[op][i]*a[i][op])%pri[op];
if(ans<) ans+=pri[op];
return ans==;
}
int main()
{
//freopen("a.in","r",stdin);
n=R(),m=R();
for(register int i=;i<=n;i++)
{
bool flag=false;
scanf("%s",s+);int len=strlen(s+);
if(s[]=='-') flag=true;
else
for(int j=;j<=;j++) a[i][j]=s[]-'';
for(register int j=;j<=len;j++)
for(register int k=;k<=;k++)
a[i][k]=(a[i][k]*%pri[k]+s[j]-'')%pri[k];
if(flag)
for(int j=;j<=;j++) a[i][j]=-a[i][j];
}
for(register int i=;i<=;i++)
for(register int j=;j<pri[i];j++)
{
pre[i][]=;
for(int k=;k<=n;k++) pre[i][k]=pre[i][k-]*j%pri[i];
if(check(i,j)) jud[i][j]=true;
}
for(register int i=;i<=m;i++)
{
bool flag=true;
for(register int j=;j<=;j++)
if(!jud[j][i%pri[j]])
{
flag=false;break;
}
if(flag) ans[++cnt]=i;
}
printf("%d\n",cnt);
for(register int i=;i<=cnt;i++) printf("%d\n",ans[i]);
return ;
}
  

刷题总结——解方程(NOIP2014)的更多相关文章

  1. 洛谷P2312 解方程 [noip2014] 数论

    正解:数论 解题报告: 这儿是,传送门qwq 又是很妙的一道题呢,专门用来对付我这种思维僵化了的傻逼的QAQ 首先看题目的数据范围,发现a<=1010000,很大的一个数据范围了呢,那这题肯定不 ...

  2. leetcode刷题-37解数独

    题目 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次.数字 1-9 在每一列只能出现一次.数字 1-9 在每一个以粗实线分隔的 3x ...

  3. LOJ2503 NOIP2014 解方程 【HASH】

    LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...

  4. [NOIP2014]解方程

    3732 解方程  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 输入描述 Input Descrip ...

  5. bzoj 3751: [NOIP2014]解方程 同余系枚举

    3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...

  6. 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)

    心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...

  7. 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】

    3751: [NOIP2014]解方程 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4856  Solved: 983[Submit][Status ...

  8. BZOJ 3751: [NOIP2014]解方程 数学

    3751: [NOIP2014]解方程 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3751 Description 已知多项式方程: ...

  9. 【NOIP2014】解方程

    题目描述 已知多项式方程 \[a_0 + a_1x + a_2x^2 + \dots +a_nx^n=0\] 求这个方程在\([1,m]\)内的整数解(\(n\)和\(m\)均为正整数). 输入输出格 ...

随机推荐

  1. Python 继承实现的原理(继承顺序)

    继承顺序 Python3 : 新式类的查找顺序:广度优先 新式类的继承: class A(object): Python2 3 都是了 MRO算法--生成一个列表保存继承顺序表 不找到底部 Pytho ...

  2. kubernetes-深入理解pod对象(七)

    Pod中如何管理多个容器 Pod中可以同时运行多个进程(作为容器运行)协同工作.同一个Pod中的容器会自动的分配到同一个 node 上.同一个Pod中的容器共享资源.网络环境和依赖,它们总是被同时调度 ...

  3. 01_7_Struts_用Action的属性接收参数

    01_7_Struts_用Action的属性接收参数 1. 配置struts.xml文件 <package name="user" namespace="/user ...

  4. Linux curl 详解

    Linux下载工具Curl也是Linux下不错的命令行下载工具,小巧.高速,唯一的缺点是不支持多线程下载.以下是他的安装和功能. 安装 $ tar zxvf curl-7.14.0.tar.gz $ ...

  5. NSXMLParser

    NSXMLParser的使用 2011-05-05 15:50:17|  分类: 解析|字号 订阅     NSXMLParser解析xml格式的数据 用法如下: 首先,NSXMLParser必须继续 ...

  6. 【模板】树套树(线段树套Splay)

    如题,这是一个模板... #include <algorithm> #include <iostream> #include <cstring> #include ...

  7. C# WPF 粘贴板记录器

    工作学习中需要搜索很多资料,有建立文档对遇到过的问题进行记录,但是一来麻烦,二来有些当时认为不重要的事情,也许一段时间后认为是重要的,需要记录的,却又一时找不到,浪费时间做重复的事情.正好借着这个机会 ...

  8. 【TCP/IP】【网络基础】网页访问流程

    引用自 <鸟哥的linux私房菜> http://cn.linux.vbird.org/linux_server/0110network_basic_1.php#ps7 那 TCP/IP ...

  9. manjaro(arch)里的vbox 安装centos7后,centos无法联网的解决办法

    第一步,在VirtualBox中设置网卡连接方式:点“设置”,在弹出的界面中点“网络”,最后选择“连接方式”为“桥接网卡”. 回到centOS中,进入终端,输入命令:ip addr,查看网络配置文件的 ...

  10. ubuntu12.04ppa安装emacs24

    ppa地址:https://launchpad.net/~cassou/+archive/emacs 因为debian版本的emacs-snapshot维护者停止更新,所有ubuntu上的也停止了. ...