P2312——解方程

wangyitong

2018-08-27 19:41:36

Personal

解一元高次方程?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)