LOJ2503 NOIP2014 解方程


LINK


题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大


看到是提高T3还是解方程就以为是神仙数学题

后来研究了一下高精之类的算法发现过不了多少分

后面佬说这题是hash

然后就雾


考虑对于一个式子f(x)=0肯定会满足f(x)%prime=0
所以我们直接多取几个相近的prime,减小冲突几率

然后我们只需要预处理每个系数对于每个prime的模数,然后判断一下就可以了

但是这样会TLE

又可以发现对于任意的f(x)%prime=0,等价于f(x%prime)%prime=0
所以对于每个质数直接枚举比它小的数进行检查就好了

然后就比较和谐了

中间出了一些比较玄学的错误导致交了很多个70分
不过问题不大


 #include<bits/stdc++.h>
using namespace std;
#define N 110
#define M 1000010
int prime[]={,,,,};
int pa[N][],n,m;
char c[M];
bool vis[M],ak[M][];
int check(int x,int id){
int pic=;
for(int i=n;i>=;i--)
pic=(pic*x%prime[id]+pa[i][id])%prime[id];
return pic;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%s",c);
int len=strlen(c),j=;
if(c[]=='-')j++;
for(;j<len;j++)for(int k=;k<;k++)
pa[i][k]=(pa[i][k]*+c[j]-'')%prime[k];
if(c[]=='-')for(int k=;k<;k++)pa[i][k]*=-;
}
int cnt=;
for(int j=;j<;j++)
for(int i=;i<prime[j];i++)
if(check(i,j)!=)ak[i][j]=;
for(int i=;i<=m;i++){
bool can=;
for(int j=;j<;j++)if(ak[i%prime[j]][j]){can=;break;}
if(can)vis[i]=,cnt++;
}
printf("%d\n",cnt);
for(int i=;i<=m;i++)if(vis[i])printf("%d\n",i);
return ;
}

LOJ2503 NOIP2014 解方程 【HASH】的更多相关文章

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

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

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

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

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

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

  4. [NOIP2014]解方程

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

  5. BZOJ3751 NOIP2014 解方程(Hash)

    题目链接  BZOJ3751 这道题的关键就是选取取模的质数. 我选了4个大概几万的质数,这样刚好不会T 然后统计答案的时候如果对于当前质数,产生了一个解. 那么对于那些对这个质数取模结果为这个数的数 ...

  6. [BZOJ3751][NOIP2014] 解方程

    Description 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数).   Input 第一行包含2个整数n.m,每两个 ...

  7. NOIP 2014 D2T3 解方程 Hash大法好

    题目大意:给定高次方程an*x^n+...+a1*x^1+a0*x^0=0 求[1,m]区间内有多少个整数根 ai<=10^10000.m<=100W 懒得高精,考场上写的long dou ...

  8. NOIP2014解方程

    题目:求一个n次整系数方程在1-m内的整数解  n<=100 系数<=10000位 m<=100W 题解:最暴力的想法是枚举x,带入求值看是否为0. 这样涉及到高精度乘高精度,高精度 ...

  9. [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 ...

随机推荐

  1. PMP第一章:引论

    项目是为创造独特的产品,服务或成果而进行的临时性的工作. 项目的临时性是指项目有明确的起点和终点. 项目旨在推动组织从一个状态(当前状态)转到另一个状态(将来状态),从而达成特定目标. 项目管理就是将 ...

  2. has~和belongsTo的区别?

    在某一个class里面,class_name所对应的表为主表(父), 关系函数方法里面的第一个参数所对应的表为从属表(子), 即为与主表相关联的表. $has~ 1.外键保存在关联表中:  2.保存时 ...

  3. Vue——解决[Vue warn]: Invalid prop: custom validator check failed for prop "index". found in错误

    Invalid prop: custom validator check failed for prop "index". 错误重现: 使用element-ui的菜单,在SubMe ...

  4. node.js 之 http 架设

    Node.js 安装配置 下载node.js安装mis 打开:cmd cd到node.js安装目录下 输入nodejs --version 显示版本号,证明安装成功 在其根目录下建server.js ...

  5. mkdir: 无法创建目录"": 没有那个文件或目录

    # mkdir /data/backup/20181128 mkdir: 无法创建目录"/data/backup/20181128": 没有那个文件或目录 原因是data目录不存在 ...

  6. Android 数据库 ObjectBox 源码解析

    一.ObjectBox 是什么? greenrobot 团队(现有 EventBus.greenDAO 等开源产品)推出的又一数据库开源产品,主打移动设备.支持跨平台,最大的优点是速度快.操作简洁,目 ...

  7. 【Python】模块学习之(__call__)实现准确计算函数运行时间

    背景 博主在写自动化的过程中,有遇到有的用例运行缓慢的问题,想起在上一家公司的的“自动化工厂”有一个指标:两小时内运行完所有的用例才算合格.所以想计算每一个用例的运行时间. 思路 因为使用的POM模型 ...

  8. http & https & http2.0

    一.http状态码 1xx(信息性状态码,接受的请求正在处理) 2xx(成功状态码,请求正常处理完毕)200 OK204 No Content:请求成功但没有资源返回206 Partial Conte ...

  9. zabbix自动化运维学习笔记(服务器配置)

    继上次博主整理的安装后,这次是配置步骤 首先打开zabbix的安装web地址   http://xx.xx.xx.xx/zabbix/setup.php  xx.xx.xx.xx是服务器的IP地址 由 ...

  10. The tilde ( ~ ) operator in JavaScript

    From the JavaScript Reference on MDC, ~ (Bitwise NOT) Performs the NOT operator on each bit. NOT a y ...