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 ...
随机推荐
- Memcache课程
这套Memcache课程今天正式上线,http://www.yzmedu.com/course/53,总计6集,包括Memcache缓存技术和Memcache用户跨域技术,后面即将发布网上最全的微信小 ...
- hibernate:inverse、cascade,一对多、多对多详解
1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所 ...
- 解决mac上matplotlib中文无法显示问题
系统:mac os, high sierra; python3.7(by brew installed) 在网上找了很多基本上都是让下载SimHei字体,然后放到mac的matplotlib的字体 ...
- angular2.x 下拉多选框选择组件
angular2.x - 5.x 的下拉多选框选择组件 ng2 -- ng5.最近在学angular4,经常在交流群看见很多人问 下拉多选怎么做... 今天就随便写的个. 组件源码 百度云 链接: ...
- python脚本8_打印对顶三角形
#打印对顶三角形 a = int(input('>>>')) for i in range(-a,a+1): if i < 0: i = -i print(" &qu ...
- jmeter-02 JMeter 生成HTML性能报告
Report Dashboard: JMeter3.0 后提供的扩展模块,支持从测试计划中获取图形和统计数据,生成HTML页面格式图形化报告. 快速入门演示 一.准备测试计划 mock_api .jm ...
- 《深入理解mybatis原理7》 MyBatis的二级缓存的设计原理
<深入理解mybatis原理> MyBatis的二级缓存的设计原理 MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能.本文将全面分 ...
- 转 Java对日期Date类进行加减运算一二三
请移步,https://blog.csdn.net/hacker_lees/article/details/74351838 ,感谢博主分享
- 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)
http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...
- Java -- 使用阻塞队列(BlockingQueue)控制线程通信
BlockingQueeu接口是Queue的子接口,但是它的主要作用并不是作为容器,而是作为线程同步的工具. 特征: 当生产者线程试图向BlockingQueue中放入元素时,如果该队列已满,则该线程 ...