luogu2312 解方程 (数论,hash)
luogu2312 解方程 (数论,hash)
第一次外出学习讲过的题目,然后被讲课人的一番话惊呆了.
这个题,我想着当年全国只有十几个满分.....然后他又说了句我考场A这道题时,用了5个模数
确实不好做想不到.
由于\(a\)非常大.转为以下思路.
设
\(f(x) = a_0+a_1x+a_2x^2+\cdots+a_nx^n\)
对于\(f(x) = 0\)则\(f(x)\%p = 0\)
\(f(x \% p) = 0\)
然后这里最好是选择素数.由于luogu数据较水,可以直接选择\(1e9 + 7\)水过.
判断会有误,所以这里选择两个数.
bzoj也有这道题,但是极其考验卡常技巧......
卡到吐血.还是没A,算了,不卡了....
记录:

#pragma GCC optimize(2)
#include <iostream>
#include <cstdio>
#define ll long long
const int maxN = 100 + 7;
const int maxM = 1e6 + 7;
const int p = 1e9 + 7;
const int p1 = 20030327;
ll a[maxN],b[maxN];
ll n,m;
bool vis[maxM];
inline bool calc(int x)
{
long long sum = 0;
for(int i = n;i >= 1;i --)
{
sum = ( (long long) ( a[i] + sum ) * x ) % p;
}
sum = ( sum + a[0] ) % p;
return !sum;
}
inline void read(ll &x1,ll &x2) {
x1 = 0,x2 = 0;
int f = 1;
char c = getchar();
while(c < '0' || c > '9') {if(c == '-')f = -1;c = getchar();}
while(c >= '0' && c <= '9') {
x1 = ( x1 * 10 + c - '0' ) % p;
x2 = ( x2 * 10 + c - '0') % p1;
c = getchar();
}
x1 *= f;
x2 *= f;
}
inline bool calc1(int x)
{
long long sum = 0;
for(int i = n;i >= 1;i --)
{
sum = ( (long long) ( b[i] + sum ) * x ) % p1;
}
sum = ( sum + b[0] ) % p1;
return !sum;
}
void print(int x)
{
if(x < 0)
{
putchar('-');
x = -x;
}
if(x > 9)
{
print(x / 10);
}
putchar(x % 10 + '0');
}
int main() {
scanf("%d%d",&n,&m);
for(int i = 0;i <= n;++ i)
read(a[i],b[i]);
int cnt = 0;
for(int i = 1;i <= m;++ i)
if(calc(i) && calc1(i)) ++ cnt,vis[i] = true;
printf("%d\n",cnt);
for(int i = 1;i <= m;++ i)
if(vis[i]) print(i),puts("");
return 0;
}
luogu2312 解方程 (数论,hash)的更多相关文章
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- NOIP2014 uoj20解方程 数论(同余)
又是数论题 Q&A Q:你TM做数论上瘾了吗 A:没办法我数论太差了,得多练(shui)啊 题意 题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, ...
- 【bzoj3751】[NOIP2014]解方程 数论
题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...
- BZOJ3751 NOIP2014 解方程(Hash)
题目链接 BZOJ3751 这道题的关键就是选取取模的质数. 我选了4个大概几万的质数,这样刚好不会T 然后统计答案的时候如果对于当前质数,产生了一个解. 那么对于那些对这个质数取模结果为这个数的数 ...
- $Noip2014/Luogu2312$ 解方程
$Luogu$ $Sol$ 枚举解+秦九韶公式计算+取模. $Code$ #include<iostream> #include<cstdio> #include<cst ...
- [luogu2312] 解方程
题面 秦九韶公式 看了上面这个之后大家应该都会了, 就是读入的时候边读入边取模, 从\(1\)到\(m\)间将每一个数带进去试一下就可以了, 复杂度是\(O(nm)\)的. 古人的智慧是无 ...
- codevs3732==洛谷 解方程P2312 解方程
P2312 解方程 195通过 1.6K提交 题目提供者该用户不存在 标签数论(数学相关)高精2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 已知多项式方程: a ...
- 洛谷 P2312 解方程 题解
P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为 ...
- [noip2014]P2312 解方程
P2312 解方程 其实这道题就是求一个1元n次方程在区间[1, m]上的整数解. 我们枚举[1, m]上的所有整数,带进多项式中看看结果是不是0即可. 这里有一个技巧就是秦九韶算法,请读者自行查看学 ...
随机推荐
- php-fpm 高并发 参数调整
工作中经常会遇到会给客户配置服务器,其中有的客户还会有并发量要求,其中也会必须要用负载均衡承载压力的.增加服务器数量肯定能有效的提升服务器承载能力,但只有根据目前已有配置设置好单台服务器才能更好的发挥 ...
- Maven多模块构建实例
创建coffee-parent项目 New->Maven Project 创建coffee-web项目 右键coffee-parent项目->New->Project... 注意:需 ...
- 基于nginx的配置网站密码认证
在nginx配置服务中,创建访问网站密码认证. 1)需要ngx_http_auth_basic_module模块 语法: Syntax: auth_basic string | off; Defaul ...
- cdq(2018.10.18)
一句话题意:给你三个数列{a_i},{b_i},{c_i},保证每个数列都恰好是一个排列.你需要求出满足\(a_i<a_j,b_i<b_j,c_i<c_j\)的有序对\((i,j)\ ...
- mongodb数据库下载链接,相关配置(转载),官方api
下载链接:http://dl.mongodb.org/dl/win32/x86_64 配置:http://blog.sina.com.cn/s/blog_685213e70101g81t.html 官 ...
- [題解]luogu_P2055假期的宿舍(二分圖最大匹配)
雖然是裸題但是仍然沒有看出來...... 1.每個人都對應一張床(可以的話),這樣把人和床看成點,對應關係就是邊,跑最大匹配看匹配數量夠不夠即可 2.連邊條件:如果一個學生且不回家,那麼他可以睡自己的 ...
- django_auth模块
auth是django提供的标准权限管控系统,可以提供用户的身份认证.用户组和权限管理. auth可以和admin配合使用,可以快速建立网站的管理系统. USER user用于维护系统的用户信息,在数 ...
- [poj 2104] K-th Number【主席树】
传送门:http://poj.org/problem?id=2104 保存模版. #include <cstdio> #include <algorithm> #include ...
- centos 6.x下pxe+tftp+http+kickstart无人值守安装操作系统
1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过 ...
- [异常]undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1:0x16529f8 @example=nil>
在进行Rspec 编译测试: bundle exec rspec spec/requests/static_pages_spec.rb 提示错误: FF Failures: 1) Static pag ...