为啥我这题的程序不开O2能过,开了就不能过呢?
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD=(1e9)+7;
int n;
ll m,a[110],x[1000010],cnt;
char s[10010];
bool cal(ll x) {
	ll y=a[n+1];
	for(int i=n; i>=1; --i) {
		y=(y*x+a[i])%MOD;
	}
	return y==0;
}
int main() {
	scanf("%d%d",&n,&m);
	for(int i=1; i<=n+1; ++i) {
		scanf("%s",s);
		if(s[0]=='-') {
			for(int j=1; j<strlen(s); ++j) {
				a[i]=(a[i]*10+s[j]-48)%MOD;
			}
			a[i]=-a[i];
		} else {
			for(int j=0; j<strlen(s); ++j) {
				a[i]=(a[i]*10+s[j]-48)%MOD;
			}
		}
	}
	for(ll i=1; i<=m; ++i) {
		if(cal(i)) {
			x[++cnt]=i;
		}
	}
	printf("%d\n",cnt);
	for(int i=1; i<=cnt; ++i) {
		printf("%d\n",x[i]);
	}
	return 0;
}