为啥我这题的程序不开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;
}