AcWing 5491. 选数
原题链接
简单
作者:
噷梢
,
2025-04-03 14:58:50
· 福建
,
所有人可见
,
阅读 2
#include<bits/stdc++.h>
using namespace std;
const int N=15;
int n,m;
int a[N];
int st[N];
int ans;
bool f(int x){
for (int i = 2; i <= x / i; i ++)
if (x % i == 0) return false;
return true;
}
void dfs(int u){
if(u==n){
int res=0,s=0;
for(int i=1;i<=n;i++){
if(st[i]==1)res+=a[i],s++;
}
if(s==m&&f(res))ans++;
return ;
}
st[u+1]=1;
dfs(u+1);
st[u+1]=0;
st[u+1]=2;
dfs(u+1);
st[u+1]=0;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dfs(0);
cout<<ans;
return 0;
}