思路:

系数的范围有$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提高组]解方程的更多相关文章

  1. NOIP2014提高组解方程

    其实没有太难 但是不知道的话想不到 考场上大概有50分吧 #include <iostream> #include <stdio.h> #include <queue&g ...

  2. [NOIP2014] 提高组 洛谷P2038 无线网络发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

  3. 刷题总结——飞扬的小鸟(NOIP2014提高组)

    题目: 题目背景 NOIP2014 提高组 Day1 试题. 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面 ...

  4. 垃圾陷阱 && [NOIP2014 提高组] 飞扬的小鸟

    #include<bits/stdc++.h> using namespace std; int d,n,dp[1010]; struct node{int t,f,h;} a[1010] ...

  5. NOIP2014提高组 酱油记

    NOIP考到哪里我就写到哪里好了. 2014/10/12 初赛 下午两点半开始考,我两点就到了.然后看到了QYL,NYZ,CZR等大神,先Orz了再说. 考试开始前,发现考场竟然没几个我认识的,不是按 ...

  6. noip2014 提高组

    T1 生活大爆炸版 石头剪刀布 题目传送门 就是道模拟题咯 #include<algorithm> #include<cstdio> #include<cstring&g ...

  7. NOIP2014提高组 题解报告

    D1 T1 无线网路发射器选址 题目大意:找一个矩形,使其覆盖的目标点最大. 题目过水,直接暴力搞过去,代码就不贴了. 但我TM居然有个地方SB了,调了半天才发现输入有问题: scanf(" ...

  8. 【学术篇】luogu1351 [NOIP2014提高组] 联合权值

    一道提高组的题..... 传送门:题目在这里.... 现在都懒得更自己的blog了,怕是太颓废了_ (:з」∠) _ 好久没做题了,手都生了.(好吧其实是做题方面手太生了) 这题我都不想讲了,把代码一 ...

  9. [NOIP2014] 提高组 洛谷P2312 解方程

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...

随机推荐

  1. C语言复习---获取矩阵的对角和

    #include <stdio.h> #include <stdlib.h> #include <math.h> #define MAX 5 int main() ...

  2. 数学:莫比乌斯反演-GCD计数

    Luogu3455:莫比乌斯反演进行GCD计数 莫比乌斯反演就是用来解决这一类问题的,通常f函数是要求的那个,F函数是显然的 这样利用F的结果就可以推出来f的结果 在计算结果的时候整除分快儿一下就可以 ...

  3. Mac安装WineHQ

    下载: (链接: https://pan.baidu.com/s/1o7NPhNk 密码: 5227) 安装: 先决条件: XQuartz>=2.7.7 系统设置允许未签名的包. 在https: ...

  4. ASP.NET MVC学习笔记-----Filter(2)

    接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public ...

  5. header()跳转

    if ($toNews == 1) { header('Location:/ucenter/pageMailBox/2'); exit; } PHP跳转页面,用 header() 函数 定义和用法 h ...

  6. 第11月第8天 ffmpeg ffplay

    static int ffplay_video_thread(void *arg) { FFPlayer *ffp = arg; VideoState *is = ffp->is; AVFram ...

  7. 20165230 《Java程序设计》实验五《网络编程与安全》实验报告

    20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...

  8. Oracle Logminer 分析重做日志RedoLog和归档日志ArchiveLog

    在实际开发过程中,有时我们很有可能需要某个表的操作痕迹,或通过记录的SQL语句进行有目的性的数据恢复(此时POINT-IN-TIME恢复已经满足不了更细的粒度).或仅仅是查看: 据说Oracle8i之 ...

  9. DVWA的Xss跨站总结

    Xss跨站总结 初级防护的代码 Poc:<script>alert(1)</script> 上图防护的代码 为输入的结果就为输出的结果 中级防护的代码 Poc:<scri ...

  10. [转]mysql性能优化-慢查询分析、优化索引和配置

    一. 优化概述 MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候.磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在 ...