[NOIp2014提高组]解方程
思路:
系数的范围有$10^{10000}$,但是用高精度做显然不现实,因此可以考虑一个类似于“哈希”的做法,
对方程两边同时取模,如果取的模数足够多,正确率就很高了。
中间对多项式的计算可以使用$O(n)$的秦九韶算法。
然而,我的模数试了很多种都不能A,看了题解发现只要对$1000000007$一个数取模就AC了?
#include<cstdio>
#include<cctype>
const long long mod=;
inline long long getll() {
bool sgn=false;
char ch;
while(!isdigit(ch=getchar())) if(ch=='-') sgn=true;
long long x=ch^'';
while(isdigit(ch=getchar())) x=((((x<<)+x)<<)+(ch^''))%mod;
return sgn?-x:x;
}
const long long N=,M=;
long long n;
long long a[N];
long long ans[M]={};
inline bool check(const long long x) {
long long sum=;
for(long long i=n;i>=;i--) {
sum=(sum*x+a[i])%mod;
}
return sum==;
}
int main() {
n=getll();
long long m=getll();
for(long long i=;i<=n;i++) a[i]=getll();
for(long long i=;i<=m;i++) {
if(check(i)) ans[++ans[]]=i;
}
for(long long i=;i<=ans[];i++) printf("%lld\n",ans[i]);
return ;
}
试了很多个模数都没能AC的代码:
#include<tuple>
#include<cstdio>
#include<cctype>
inline int getint() {
char ch;
while(!isdigit(ch=getchar()));
int x=ch^'';
while(isdigit(ch=getchar())) x=((((x<<)+x)<<)+(ch^''));
return x;
}
const int mod_size=;
const int mod[mod_size]={,,,,};
inline std::tuple<int,int,int,int,int> gettuple() {
bool sgn=false;
char ch;
while(!isdigit(ch=getchar())) if(ch=='-') sgn=true;
int x[mod_size];
for(int i=;i<mod_size;i++) x[i]=ch^'';
while(isdigit(ch=getchar())) {
for(int i=;i<mod_size;i++) {
x[i]=((((x[i]<<)+x[i])<<)+(ch^''))%mod[i];
}
}
return sgn?std::make_tuple(mod[]-x[],mod[]-x[],mod[]-x[],mod[]-x[],mod[]-x[]):std::make_tuple(x[],x[],x[],x[],x[]);
}
const int N=,M=;
int n;
int a[mod_size][N];
int ans[M]={};
inline bool check(const int x) {
int sum[mod_size];
for(int i=n;i>=;i--) {
for(int j=;j<mod_size;j++) {
sum[j]=(sum[j]*x%mod[j]+a[j][i])%mod[j];
}
}
bool ret=true;
for(int i=;i<mod_size;i++) ret=ret&&!sum[i];
return ret;
}
int main() {
n=getint();
int m=getint();
for(int i=;i<=n;i++) {
std::tuple<int,int,int,int,int> p=gettuple();
a[][i]=std::get<>(p);
a[][i]=std::get<>(p);
a[][i]=std::get<>(p);
a[][i]=std::get<>(p);
a[][i]=std::get<>(p);
}
for(int i=;i<=m;i++) if(check(i)) ans[++ans[]]=i;
for(int i=;i<=ans[];i++) printf("%d\n",ans[i]);
return ;
}
[NOIp2014提高组]解方程的更多相关文章
- NOIP2014提高组解方程
其实没有太难 但是不知道的话想不到 考场上大概有50分吧 #include <iostream> #include <stdio.h> #include <queue&g ...
- [NOIP2014] 提高组 洛谷P2038 无线网络发射器选址
题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...
- 刷题总结——飞扬的小鸟(NOIP2014提高组)
题目: 题目背景 NOIP2014 提高组 Day1 试题. 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面 ...
- 垃圾陷阱 && [NOIP2014 提高组] 飞扬的小鸟
#include<bits/stdc++.h> using namespace std; int d,n,dp[1010]; struct node{int t,f,h;} a[1010] ...
- NOIP2014提高组 酱油记
NOIP考到哪里我就写到哪里好了. 2014/10/12 初赛 下午两点半开始考,我两点就到了.然后看到了QYL,NYZ,CZR等大神,先Orz了再说. 考试开始前,发现考场竟然没几个我认识的,不是按 ...
- noip2014 提高组
T1 生活大爆炸版 石头剪刀布 题目传送门 就是道模拟题咯 #include<algorithm> #include<cstdio> #include<cstring&g ...
- NOIP2014提高组 题解报告
D1 T1 无线网路发射器选址 题目大意:找一个矩形,使其覆盖的目标点最大. 题目过水,直接暴力搞过去,代码就不贴了. 但我TM居然有个地方SB了,调了半天才发现输入有问题: scanf(" ...
- 【学术篇】luogu1351 [NOIP2014提高组] 联合权值
一道提高组的题..... 传送门:题目在这里.... 现在都懒得更自己的blog了,怕是太颓废了_ (:з」∠) _ 好久没做题了,手都生了.(好吧其实是做题方面手太生了) 这题我都不想讲了,把代码一 ...
- [NOIP2014] 提高组 洛谷P2312 解方程
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
随机推荐
- Kafka 0.8 宕机问题排查步骤
CPU 利用率高的排查方法 看看该机器的连接数是不是比其他机器多,监听的端口数:netstat -anlp | wc -l Kafka-0.8的停止和启动 启动: cd /usr/local/kafk ...
- bzoj千题计划287:bzoj1228: [SDOI2009]E&D
http://www.lydsy.com/JudgeOnline/problem.php?id=1228 打SG函数表,找规律: 若n是奇数m是奇数,则SG(n,m)=0 若n是偶数m是偶数,则SG( ...
- iOS中UITableView和UICollectionView的默认空态页
项目中想实现空态页风格统一控制的效果,就封装了一个默认空态页,使用的技术点有:1 方法替换 ,2 给分类(Category)添加属性. 我们知道,扩展(extension)可以给类添加私有变量和方法. ...
- Zookeeper笔记之基于zk的分布式配置中心
一.场景 & 需求 集群上有很多个节点运行同一个任务,这个任务会有一些可能经常改变的配置参数,要求是当配置参数改变之后能够很快地同步到每个节点上,如果将这些配置参数放在本地文件中则每次都要修改 ...
- 爬虫笔记之刷小怪练级:yymp3爬虫(音乐类爬虫)
一.目标 爬取http://www.yymp3.com网站歌曲相关信息,包括歌曲名字.作者相关信息.歌曲的音频数据.歌曲的歌词数据. 二.分析 2.1 歌曲信息.歌曲音频数据下载地址的获取 随便打开一 ...
- 针对Jigsaw勒索软件的解锁工具
针对Jigsaw勒索软件的解锁工具 据了解, 用户的计算机系统一旦感染了勒索软件Jigsaw,如果用户没有在一个小时之内支付赎金(0.4个比特币,价值约为150美金),那么恶意软件将会把系统中的上千份 ...
- opencv学习笔记(八)IplImage* 访问图像像素的值
opencv2.1版本之前使用IplImage*数据结构来表示图像,2.1之后的版本使用图像容器Mat来存储.IplImage结构体如下所示. typedef struct _IplImage { i ...
- APP的CPU,内存,耗电,流量测试工具
APP的CPU,内存,耗电,流量测试工具下载地址,后续文章会介绍如何使用Emmagee.itest.gt APP应用的CPU,内存,耗电,流量调查 可和同类产品比较,使用GT等工具:CPU靠syste ...
- javascript-词法分析解析
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【linux】环境变量
参考链接: http://www.cnblogs.com/growup/archive/2011/07/02/2096142.html https://zhidao.baidu.com/questio ...