rt,理论上不会超时的吧
#include <iostream>
#include <cstdio>
#include <cstring>
#define int long long
using namespace std;
int a[1000001],b[1000001],pd[1001];
signed main()
{
int n,m,x,y,p,t,cnt,k;
cin >> n >> x >> y >> p ;
for( int i = 1 ; i <= n ; i ++ )
{
cin >> a[i];
if( a[i] >= 1000 )
{
b[i] = 0x3f3f3f3f;
continue;
}
t = a[i];
cnt = 0;
memset( pd , 0 , sizeof( pd ) );
while( !pd[t] )
{
pd[t] ++;
cnt ++;
t = ( x * t % p + y ) % p;
}
if( t != a[i] ) b[i] = 0x3f3f3f3f;
else b[i] = cnt;
// cout << b[i] << endl;
}
cin >> m;
for( int i = 1 ; i <= m ; i ++ )
{
cin >> k;
cnt = 0;
for( int j = 1 ; j <= n ; j ++ )
if( k % b[j] == 0 )
cnt ++;
cout << cnt << endl;
}
return 0;
}