code:
#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int M = 110;
const int N = 40;
int n,m,k,v[M],a[N],ans;
inline bool check() {
unsigned long long S = 0;
for(int i = 1; i <= n; ++i) S += (1 << a[i]);
return (__builtin_popcount(S) <= k);
}
void dfs(int now,int val) {
if(now >= n) {
if(check()) ans = 1ll*(ans+val)%mod;
return;
}
for(int i = 0; i <= m; ++i) {
a[now+1] = i;
dfs(now+1,1ll*val*v[a[now+1]]%mod);
a[now+1] = 0;
}
}
int main() {
// freopen("sequence.in","r",stdin);
// freopen("sequence.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
for(int i = 0; i <= m; ++i) scanf("%d",&v[i]);
dfs(0,1);
printf("%d\n",ans);
return 0;
}
要不要申诉qwq