显示原始代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 5e3 + 5;
const int mod = 998244353;
int n, G, L, Q, a[MAXN], sum[MAXN], l, temp, gcdf, lcmf;
int gcd(int x, int y) {
if (y == 0)
return x;
return gcd(y, x % y);
}
int lcm(int x, int y) { return ((ll)x * y) / gcd(x, y); }
void puts() {
for (int i = 0; i <= n; ++i) {
cout << sum[i] << ' ';
}
cout << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> G >> L >> Q;
for (int i = 1; i <= Q; ++i) cin >> a[i];
for (int i = 1; i < (1 << n); ++i) {
temp = i;
l = 1;
gcdf = 0;
lcmf = 1;
while (temp) {
if (temp & 1) {
gcdf = gcd(l, gcdf);
lcmf = lcm(l, lcmf);
}
l++;
temp >>= 1;
}
if (gcdf == G && lcmf == L) {
temp = i;
l = 1;
while (temp) {
if (temp & 1) {
sum[l]++;
}
l++;
temp >>= 1;
}
sum[0]++;
}
}
cout << sum[0] << endl;
for (int i = 1; i <= Q; ++i) {
cout << sum[a[i]] << endl;
}
return 0;
}