[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 ...
随机推荐
- SQL记录-PLSQL-DBMS输出
PL/SQL DBMS输出 DBMS_OUTPUT是一个内置的软件包,能够显示输出显示调试信息,并从PL/ SQL块,子程序,包和触发器发送消息.我们已经使用这个包在我们所有的教程中. 让我们来看 ...
- Linux通过ssh登录其他服务器,不用输入密码
有A(192.168.10.163)和B(192.168.10.164)两台服务器,为了使A服务器通过SSH连接B服务器时,免密登录,做以下操作. 1. 登录A(192.168.10.163)服务器( ...
- Codeforces 662 C. Binary Table
http://codeforces.com/contest/662/problem/C 题意:n行m列01矩阵,每次可以反转一行或一列,问最后最少可以剩下多少个1 n只有20,把行状态压缩 操作奇数次 ...
- bzoj千题计划239:bzoj4069: [Apio2015]巴厘岛的雕塑
http://www.lydsy.com/JudgeOnline/problem.php?id=4069 a!=1: 从高位到低位一位一位的算 记录下哪些位必须为0 dp[i][j] 表示前i个数分为 ...
- Web性能优化系列(3):如何延迟加载JS
本文由 伯乐在线 - J.c 翻译,sunbiaobiao 校稿.未经许可,禁止转载!英文出处:www.feedthebot.com.欢迎加入翻译小组. 延迟加载JavaScript JavaScri ...
- Grunt 插件发布过程;
首先: Npm adduser User: xxxx Password: yyyy Email: glootz@gmail.com 进入到插件根目录下: Npm publish即可 Package.j ...
- iOS问题#解决方案#之关于“application/x-www-form-urlencoded;charset=utf-8” not supported
http://www.cnblogs.com/ChenYilong http://www.cnblogs.com/ChenYilong 如果你用的是AFN/ASI,那得修改源代码了,因为AFN ...
- Ubuntu 12.04安装后无法boot
解决方法是: 在选择启动项时, U盘会有两种启动方式: UEFI和非UEFI的. 用非UEFI进入live CD安装系统后无法启动, 用UEFI重装后问题解决.
- Net::HTTP 一次添加 cookie, body 发送post请求
use Net::HTTP::Request; use Net::HTTP::URL; use Net::HTTP::Transport; my $url = Net::HTTP::URL.new(& ...
- mysql主键的缺少导致备库hang
最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的 ...