题目:

题目描述

已知多项式方程:

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. Netbackup8.0以上版本,服务端生成证书,客户端获取、更新证书方式(整理中)

    创建重发令牌 如果非主控主机已在主服务器上注册但其基于主机ID的证书不再有效,则可以重新颁发基于主机ID的证书.例如,证书在过期,被撤销或丢失时无效. 重发令牌是一种可用于重新颁发证书的令牌.它是一种 ...

  2. PAT (Basic Level) Practise (中文)- 1015. 德才论 (25)

    http://www.patest.cn/contests/pat-b-practise/1015 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡 ...

  3. 空类生成对象输出的结果是什么? toString()输出 覆写Object toString()方法输出的结果是什么

    空类生成对象输出的结果是什么? 输出的是对象在内存空间地址的哈希值 com.swift.P@1db9742 空类生成对象toString()输出的结果是什么? 输出的是对象在内存空间地址的哈希值的字符 ...

  4. Codeforces Round #513 (rated, Div. 1 + Div. 2)

    前记 眼看他起高楼:眼看他宴宾客:眼看他楼坍了. 比赛历程 开考前一分钟还在慌里慌张地订正上午考试题目. “诶这个数位dp哪里见了鬼了???”瞥了眼时间,无奈而迅速地关去所有其他窗口,临时打了一个缺省 ...

  5. 使用jmeter做简单的压测(检查点、负载设置、聚合报告)

    1.添加断言(检查点) 在需要压测的接口下添加--断言--响应断言,取接口响应中包含有的数据即可 检查点HTTP请求-->断言-->响应断言1.名称.注释2.Apply to//作用于哪里 ...

  6. Python——format汇总

    一.str.format 按照指定格式格式化字符串,然后返回格式化的字符串,源字符串不变. 以下是Python2.7环境. 1.1.按照位置替换 参考下面例子: >>> s = '{ ...

  7. APP客户端图片上传PHP接口

    1.客户端 file_get_contents($_FILES['img']['tmp_name']) //获取临时目录下的上传文件流,加密传给接口   2.接口处理端 $img = file_get ...

  8. Tourists Gym - 101002I LCA——dfs+RMQ在线算法

    LCA(Least Common Ancestors),即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先). 知识需求:1)RMQ的S ...

  9. B - CD UVA - 624

    https://cn.vjudge.net/contest/224070#problem/B #include <iostream> #include <cstring> #i ...

  10. 算法导论 第七章 快速排序(python)

    用的最多的排序 平均性能:O(nlogn){随机化nlogn} 原地址排序 稳定性:不稳定 思想:分治 (切分左右) 学习方式:自己在纸上走一遍   def PARTITION(A,p,r): x = ...