P2312——解方程
wangyitong
2018-08-27 19:41:36
解一元高次方程?emmm...当时不会,滚去学了一波秦九韶算法,然后开开心心写完,发现ai是10^1000,根本读不进来;然后不想写高精,~~(据说写高精会t)~~就直接交了一发,拿了50pts,
后来听说高精和我得的分一样,2333;
那正解是啥,取膜啊,我:???,取膜能对啊,这怎么可能对,然后我就去问ydn巨佬,他说如果hash对,这个就对。
行吧,然后就滚回来mod了1e9+7。
结果还是五十???机房某位大佬不屑的说,你读入的时候没取mod,只在运算时取有啥用。有理。
```cpp
// luogu-judger-enable-o2
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<cmath>
#include<queue>
#include<map>
#include<set>
#define ri register int
#define int long long
#define max maxx
#define min minn
using namespace std;
const int N=1e6+10;
const int mod=1e9+7;
template <class T> void in(T &x) {
x = 0;
bool f = 0;
char c = getchar();
while (c < '0' || c > '9') {
if (c == '-') f = 1;
c = getchar();
}
while ('0' <= c && c <= '9') {
x =((x << 3) + (x << 1) + (c ^ 48))%mod;
c = getchar();
}
if (f) x = -x;
}
inline int maxx(int x,int y) {
return x>y?x:y;
}
inline int minn(int x,int y) {
return x<y?x:y;
}
int a[N],ans[N];
int n,m,tot;
inline int solve(int now,int x)
{
if(!now)
return a[n-now]%mod;
else
return (x*solve(now-1,x)+a[n-now])%mod;
}
signed main()
{
in(n),in(m);
for(ri i=0;i<=n;++i)
in(a[i]);
for(ri i=1;i<=m;++i)
if(solve(n,i)==0)
ans[++tot]=i;
printf("%lld\n",tot);
for(ri i=1;i<=tot;++i)
printf("%lld\n",ans[i]);
return 0;
}
```
据某些巨佬说:这题有一个什么三模数的做法。
贴个链接:[zzhbr——noip2014 解方程](https://www.cnblogs.com/BriMon/p/9525884.html)