solution:
看到这道题突然想起来高一数学课上讲的秦九韶算法0.0
看了眼m范围不大
于是妥妥的暴力枚举+秦九韶判断
写完高精发现样例过不了,好像没处理负数??
负数高精怎么写啊想想觉得很复杂,据说可以模大质数?
但是大质数可能会gg所以要多%几个
(但是我懒就只%了一个)
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define maxn 105
#define int long long
using namespace std;
int n,m,num,ans[1000005],a[maxn];
const int mod=1000000007;
inline int rd(){
int x=0,f=1;char c=' ';
while(c<'0' || c>'9') {if(c=='-')f=-1;c=getchar();}
while(c<='9' && c>='0') x=(x*10+c-'0')%mod,c=getchar();
return x*f;
}
bool check(int x){
int sum=0;
for(int i=n;i;i--){
sum=((a[i]+sum)*x)%mod;
}
sum=(sum+a[0])%mod;
return sum==0?true:false;
}
signed main(){
n=rd(); m=rd();
for(int i=0;i<=n;i++){
a[i]=rd();
}
for(int i=1;i<=m;i++){
if(check(i)){
ans[++num]=i;
}
}
printf("%d\n",num);
for(int i=1;i<=num;i++) printf("%d\n",ans[i]);
return 0;
}