[NOIP2014] 解方程&加强版 (bzoj3751 & vijos1915)
大概有$O(m)$,$O(n\sqrt{nm})$,$O(n\sqrt{m})$的3个算法,其中后2个可以过加强版。代码是算法3,注意BZOJ的数据卡掉了小于20000的质数。
#include<algorithm>
#include<cstdio>
using std::sort;
typedef long long ll;
const int p1=20123;
const int p2=20201;
const int p3=2e8-9;
char z[10002];
typedef int arr[1001];
arr f1,f2,f3,s1,s2,s3;
int n,m,n1,n2,n3;
int eval(int x,int*f,int p){
ll s=0;
for(int i=n;~i;--i)
s=(s*x+f[i])%p;
return s;
}
void up(int&s,int t,int p){
s=(s*10ll+t-48)%p;
}
int inv(int t,int p){
int s=1;
for(int n=p-2;n;n>>=1){
if(n&1)s=s*t%p;
if(n>1)t=t*t%p;
}
return s;
}
const ll q1=p2*inv(p2,p1);
const ll q2=p1*inv(p1,p2);
const int p0=p1*p2;
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<=n;++i){
scanf("%s",z);
for(int j=*z=='-';z[j];++j){
up(f1[i],z[j],p1);
up(f2[i],z[j],p2);
up(f3[i],z[j],p3);
}
if(*z=='-'){
f1[i]=p1-f1[i];
f2[i]=p2-f2[i];
f3[i]=p3-f3[i];
}
}
for(int i=0;i<p1;++i)
if(!eval(i,f1,p1))s1[n1++]=i;
for(int i=0;i<p2;++i)
if(!eval(i,f2,p2))s2[n2++]=i;
for(int i=0;i<n1;++i)
for(int j=0;j<n2;++j){
int x=(s1[i]*q1+s2[j]*q2)%p0;
if(1<=x&&x<=m)
if(!eval(x,f3,p3))s3[n3++]=x;
}
printf("%d\n",n3);
sort(s3,s3+n3);
for(int i=0;i<n3;++i)
printf("%d\n",s3[i]);
}
[NOIP2014] 解方程&加强版 (bzoj3751 & vijos1915)的更多相关文章
- 【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 已知多项式方程: ...
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- 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] 解方程
Description 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m,每两个 ...
- [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 ...
- 【bzoj3751】[NOIP2014]解方程 数论
题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...
随机推荐
- nios II--实验1——hello_world软件部分
hello_world 软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for ...
- [BZOJ1016][JSOI2008]最小生成树计数(结论题)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1016 分析: 首先有个性质:如果边集E.E'都可以表示一个图G的最小生成树(当然E和E ...
- 乱码电路(Garbled circuits)
乱码电路(Garbled circuits)是Andrew Yao教授在上世纪80年代发明的一种很聪明的技术.它可以让两个人针对某个算式来计算答案,而不需要知道他们在计算式所输入的数字. 举个例子说, ...
- elasticsearch installation guide
UBUNTU 14.04 LTS 安装 elasticseach同步MYSQL表并实现中文搜索 ==================================================== ...
- [转]为什么我要用 Node.js? 案例逐一介绍
原文地址:http://blog.jobbole.com/53736/ 介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样, ...
- git 保存用户名和密码
打开TortoiseGit控制面板 点击 Edit global .gitconfig文件 添加 [credential] helper = store OK了 你再登录一次之后密码就被记住了
- mysql查询所有记录,并去掉重复的记录
select * from tablename group by name;如果是select * from tablename group by name,age;那么查询的是满足name和age都 ...
- iOS 使用AFN 进行单图和多图上传
图片上传时必要将图片进行压缩,不然会上传失败 1.单张图上传 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManag ...
- Trinity min_kmer_cov
A high min_kmer value was used to reduce noise in the assembly and to identify only transcripts that ...
- C++ 序列式容器之vector
什么是容器 容器,顾名思义,是用来容放东西的场所.C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的.众所周知,常用的数据结构不外乎:数组array, 链表list, 树tree ...