求助,TLE#2#10
查看原帖
求助,TLE#2#10
236416
_stOrz_楼主2021/12/18 16:43
#include<bits/stdc++.h>
#define int long long
using namespace std;
int  n, m, mod[5] = {0, 19491001, 19260817, 998244353, 99991}, use[1000005][5], ans[2000005], tot;
inline void read(int now){
	char ch = getchar(); int x = 0; bool f = false;
	while((ch > '9' or ch < '0') and ch != '-') ch = getchar();
	if(ch == '-') f = true, ch = getchar();
	while(ch >= '0' and ch <= '9'){
		for(int i = 1; i <= 2; i++) use[now][i] =(((use[now][i] << 3) + (use[now][i] << 1) + ch - 48) % mod[i]);
		ch = getchar();
	}
	for(int i = 1; i <= 2; i++){
		use[now][i] *= (f?-1:1);
	}
	return;
}
bool check(int x){ 
	for(int i = 1; i <= 2; i++){
		int now = use[n][i];
		for(int j = n - 1; j >= 0; j--) now = (now * x + use[j][i]) % mod[i];
		if(now != 0) return false;
	}
	return true;
}
inline int rd(){
    char ch = getchar(); bool f = false;int x = 0;
    while((ch > '9' or ch < '0') and ch != '-') ch = getchar();
    if(ch == '-') f = true, ch = getchar();
    while(ch >= '0' and ch <= '9') x = x * 10 + ch - 48, ch = getchar();
    return f?-x:x;
}
signed main(){
	n = rd(), m = rd();
	for(int i = 0; i <= n; i++) read(i);
	for(int i = 1; i <= m; i++){
		if(check(i) == true) ans[++tot] = i;
	}
	printf("%lld\n", tot);
	for(int i = 1; i <= tot; i++) printf("%lld\n", ans[i]);
	return 0;
}

2021/12/18 16:43
加载中...