[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=3751
[算法]
对于每个x , 将方程左边对一个质数取模
时间复杂度 : O(NM)
[代码]
#include<bits/stdc++.h> using namespace std; #define MAXN 300010 #define RG register const int P = 998244353; typedef long long LL; int n , m , ans , cnt; int a[MAXN] , res[MAXN]; template <typename T> inline void chkmax(T &x , T y) { x = max(x , y); } template <typename T> inline void chkmin(T &x , T y) { x = min(x , y); } template <typename T> inline void read(T &x) { T f = 1; x = 0; char c = getchar(); for (; !isdigit(c); c = getchar()) if (c == '-') f = -f; for (; isdigit(c); c = getchar()) x = (1LL * x * 10 + c - '0') % P; x *= f; x = (x + P) % P; } inline bool ok(int x) { int ret = 0 , tmp = 1; for (RG int i = 0; i <= n; i++) { ret = (ret + 1LL * a[i] * tmp) % P; tmp = 1LL * tmp * x % P; } if (!ret) return true; else return false; } int main() { read(n); read(m); for (RG int i = 0; i <= n; i++) read(a[i]); for (RG int i = 1; i <= m; i++) { if (ok(i)) { ++ans; res[++cnt] = i; } } printf("%d " , ans); for (RG int i = 1; i <= cnt; i++) printf("%d " , res[i]); return 0; }