LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程
题目大意就是给你一个方程,让你求[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】的更多相关文章
- 【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 已知多项式方程: ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
- [NOIP2014]解方程
3732 解方程 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入描述 Input Descrip ...
- BZOJ3751 NOIP2014 解方程(Hash)
题目链接 BZOJ3751 这道题的关键就是选取取模的质数. 我选了4个大概几万的质数,这样刚好不会T 然后统计答案的时候如果对于当前质数,产生了一个解. 那么对于那些对这个质数取模结果为这个数的数 ...
- [BZOJ3751][NOIP2014] 解方程
Description 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m,每两个 ...
- NOIP 2014 D2T3 解方程 Hash大法好
题目大意:给定高次方程an*x^n+...+a1*x^1+a0*x^0=0 求[1,m]区间内有多少个整数根 ai<=10^10000.m<=100W 懒得高精,考场上写的long dou ...
- 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 ...
随机推荐
- SpringMvc 笔记
整理出来是 SpringMvc 笔记 方便以后查询 框架太多了 不经常使用 忘记的可能性很大 自己整理一套笔记 一看就明白了 1 对比 原始请求响应流程 1 发送请求 --> 2 控制层 --& ...
- vim与shell切换
扩展一些vim的知识. vim与shell切换 :shell 可以在不关闭vi的情况下切换到shell命令行. :exit 从shell回到vim. 文件浏览 :Ex 开启目录浏览器,可以浏览当前目录 ...
- jQuery全局冲突案例,解决$.noConflict()
如图:犹豫$在js中可以作为一个变量去定义,所以在引入jQuery包之前定义了$对象,那么,在引入jQuery包之后就不能使用$对象了 解决:使用$.noConflict()她可以返回一个对象,这个对 ...
- Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011
Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011 Problem A.Chocol ...
- UVA-1611 Crane (构造)
题目大意:给一个1~n的序列,每次操作可以把长度为偶数的序列交换前一半和后一半的位置.求出将这个序列变成升序的步骤. 题目分析:构造求解. 代码如下: # include<iostream> ...
- Hibernate[延迟加载] [三种状态] [脏检查] [缓存机制]
一.持久化对象的唯一标识 java中按内存地址不同区分同一个类的不同对象,关系数据库用主键区分同一条记录,Hibernate使用OID来建立内存中的对象和数据库中记录的对应关系 什么是OID? 解析: ...
- rsa加解密密钥生成命令
(1)生成原始RSA私钥文件 rsa_private_key.pem(原始私钥) openssl genrsa -out rsa_private_key.pem 2048 (2)将原始RSA私钥转换为 ...
- spring boot 中logback多环境配置
spring boot 配置logback spring boot自带了log打印功能,使用的是Commons logging 具体可以参考spring boot log 因此,我们只需要在resou ...
- nmcli 使用记录---fatt
安装nmcli工具 yum install NetworkManager 使用语法 Usage: nmcli [OPTIONS] OBJECT { COMMAND | help } OBJECT g[ ...
- Esper——内存计算、事件驱动、SQL支持
教程简介Esper是一个事件流处理(ESP)和事件关联引擎(CEP的,复杂事件处理).Esper的目标是针对实时事件驱动架构(EDA).当Esper监测到事件流中又符合条件的时间发生时,即可触发Pla ...