- #include#include#include#include using namespace std;
- typedef long long LL;
- int prime[5] = {
- 839,
- 233,
- 23333,
- 22877,
- 19997
- },
- a[105][5];
- int n,
- m,
- cnt = 0,
- t[1000005];
- char s[10005];
- int judge[1000005];
- int read(char * s, int p) {
- int x = 0,
- f = 1,
- i = 0;
- while (s[i] < '0' || s[i] > '9') {
- if (s[i] == ' - ') f = -1;
- i++;
- }
- while (s[i] >= '0' && s[i] <= '9') x = (x * 10 + s[i] - '0') % p,
- i++;
- return x * f;
- }
- int main() {
- scanf("%d%d", &n, &m);
- for (int i = 0; i <= n; i++) {
- scanf("%s", s);
- for (int j = 0; j < 5; j++) a[i][j] = read(s, prime[j]);
- }
- for (int i = 0; i < 5; i++) {
- for (int j = 0; j) {
- int pow = 1;
- LL ans = 0;
- for (int k = 0; k <= n; k++) {
- ans += (1LL * pow * a[k][i]) % prime[i];
- ans %= prime[i];
- pow = (1LL * pow * j) % prime[i];
- }
- if (!ans) {
- for (int k = 0; k * prime[i] + j <= m; k++) judge[k * prime[i] + j]++;
- }
- }
- }
- for (int i = 1; i <= m; i++) if (judge[i] == 5) t[++cnt] = i;
- printf("%d\n", cnt);
- for (int i = 1; i <= cnt; i++) printf("%d\n", t[i]);
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2050745.html