luogu 2312 解方程 乱搞+取模
思路非常好想,但是你很难想到去用这个算法,因为这个几乎就是个乱搞~
我们发现多项式中每一个系数都很大,但是 $m$ 却很小,即最多只用 $10^6$ 个整数需要验证.
我们知道,如果一个数等于 $0$,那么这个数模任何一个数也都应该该等于 $0$
所以可以直接取 $3$ 个左右的质数当模数,分别带值,取模,然后判一下等不等于 $0$.
当然,带值的部分可以用秦九昭算法,但是我感觉这只算是常数上的优化吧~
只能在 luogu 上过,bz 上过不去~
复杂度 $O(n\times m)$
#include <bits/stdc++.h>
#define N 1000005
#define LL long long
#define setIO(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
using namespace std;
// 0 ~ 15
const LL mod[]={998244353,19,1e9+7, 1e9+9, 233,233233,23,17,19,11,613317,119,911,2332,2323,1415,1717};
int n,m;
char str[103][N];
vector<int>v;
LL a[20][N];
int check(int tmp)
{
// 15 个模数
int i,j;
for(i=0;i<=0;++i)
{
LL temp=0ll;
a[i][n+1]=0ll;
for(j=n+1;j>=0;--j)
temp=(temp*1ll*tmp%mod[i]+a[i][j])%mod[i];
if(temp!=0) return 0;
}
return 1;
}
inline void Init()
{
int i,j;
for(i=0;i<=0;++i)
{
for(j=0;j<=n;++j)
{
LL tmp=0,base=1ll;
int len=strlen(str[j]);
for(int k=len-1;k>=0;--k)
{
if(k==0&&str[j][k]=='-')
{
tmp=(mod[i]-tmp%mod[i])%mod[i];
}
else
{
tmp=(tmp+(str[j][k]-'0')*base)%mod[i], base=base*10%mod[i];
}
}
a[i][j]=tmp;
// printf("%d %lld\n",j,a[j]);
}
}
}
int main()
{
// setIO("input");
int i,j;
scanf("%d%d",&n,&m);
for(i=0;i<=n;++i) scanf("%s",str[i]);
Init();
for(i=1;i<=m;++i) if(check(i)) v.push_back(i);
printf("%d\n",v.size());
for(i=0;i<v.size();++i) printf("%d\n",v[i]);
return 0;
}
luogu 2312 解方程 乱搞+取模的更多相关文章
- Luogu P2312 解方程
据大佬的说法这种大力乱搞题出在除NOIp以外的任何比赛都是很好的然而就是被出在了NOIp 首先对于想直接上高精的同学,我还是祝你好运吧. 我们考虑一个十分显然的性质,若\(a=b\),则对于任一自然数 ...
- HDU6128 二次剩余/二次域求二次剩余解/LL快速乘法取模
LINK 题意:求满足模p下$\frac{1}{a_i+a_j}\equiv\frac{1}{a_i}+\frac{1}{a_j}$的对数,其中$n,p(1\leq n\leq10^5,2\leq p ...
- P3105 [USACO14OPEN]公平的摄影(正解是乱搞,我却二分了)(+二分答案总结)
照例化简题意: 给定一个01区间,可以把0改成1,问其中最长的01数量相等的区间长度. 额很容易想到前缀和,把w弄成1,h弄成-1,然后求前缀和,然后乱搞就行了. 但是一直不太会乱搞的我却直接想到了二 ...
- [NOIp2014] luogu P2312 解方程
题目描述 已知方程∑i=0naixi=0\sum_{i=0}^{n}{a_ix^i}=0i=0∑naixi=0求该方程在 [1,m][1,m][1,m] 内的整数解. Solution 有一个秦九 ...
- 洛谷 P2312 & bzoj 3751 解方程 —— 取模
题目:https://www.luogu.org/problemnew/show/P2312 https://www.lydsy.com/JudgeOnline/problem.php?id=3751 ...
- $Noip2014/Luogu2312$ 解方程
$Luogu$ $Sol$ 枚举解+秦九韶公式计算+取模. $Code$ #include<iostream> #include<cstdio> #include<cst ...
- hoj3152-Dice 等比数列求和取模
http://acm.hit.edu.cn/hoj/problem/view?id=3152 Dice My Tags (Edit) Source : Time limit : sec Memory ...
- [NOIp2014提高组]解方程
思路: 系数的范围有$10^{10000}$,但是用高精度做显然不现实,因此可以考虑一个类似于“哈希”的做法, 对方程两边同时取模,如果取的模数足够多,正确率就很高了. 中间对多项式的计算可以使用$O ...
- 【NOIP模拟赛】beautiful 乱搞(平衡树)+ST
biubiu~~~ 我用平衡树处理的这道题,然而这种方法还是要看评测姬..... 正解是乱搞....就是枚举每一位数作为中位数,比他小的看做-1比他大的看做1,那么我们从一开始就有了一个绵延的山,我们 ...
随机推荐
- Django模型层之单表操作
Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软 ...
- Linux环境python3.6.5
安装python3.6可能使用的依赖 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel r ...
- Web SSH远程连接利器:gotty
Web SSH远程连接利器:gotty 这个东东能让你使用浏览器连接你远程的机器! 一. 环境准备 下载https://github.com/yudai/gotty. 请先配置好 Golang 环境, ...
- Java 并发框架Disruptor(七)
Disruptor VS BlockingQueue的压测对比: import java.util.concurrent.ArrayBlockingQueue; public class ArrayB ...
- 解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)
总结起来就是:设计器的版本要跟外部引用的库版本一致,否则XAML设计器就会显示不出来. 例如你的程序是X64的,但是引用的COM组件是32位的,就会显示不出来.这里的建议是:编译一个32位的COM中间 ...
- IdentityServer4之Jwt身份验证方案分析
一,准备内容 在之前讲过的asp.net core 实现OAuth2.0四种模式系列中的IdentityApi客户端用到了以下配置代码 public void ConfigureServices(IS ...
- MVC比WebForm的优势,为什么使用MVC
前言 如果你看了最近微软的议程,你会发现他们现在的焦点除了MVC,还是MVC.问题在于为什么微软如此热衷于丢弃传统的APS.NET Webform而转向ASP.NET MVC?本文就主要来讨论这个问题 ...
- 【转载】Extjs设置Ajax请求的超时时间timeout
在Extjs中的Ajax请求中,Ext.Ajax.request 默认超时时间是30秒,有时候我们有比较耗时的操作需要设置更长时间,此时我们就需要修改Ext.Ajax.Requset的超时时间为更长, ...
- vue 自定义image组件
介绍 1:当图片加载失败时,给出错误提示. 2:当图片加载中时,给出加载提示. 3:图片处理模式:等比缩放/裁剪/填充/... 1.图片加载状态处理 通过给图片绑定load事件与error事件处理函数 ...
- CSS是什么
css是层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. CSS不 ...