#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<cstdlib>
using namespace std;
#define int long long
int n; int k;
vector<int> l;
int ans=0;
bool prime[100000005];
void init(){
prime[0] = false;
prime[1] = false;
memset(prime, 0, sizeof prime);
for(int i=2;i<=1000000;i++){
if(!prime[i]){
for(int j=i*i;j<=1000000;j+=i){
prime[j]=true;
}
}
prime[i] = !prime[i];
}
}
int fact(int k){
if(k == 0 || k == 1) return 1;
else return k*fact(k-1);
}
void dfs(int deepth, int summerize, int beg) {
if(deepth == k){
if(prime[summerize]){
ans ++;
}
return ;
}
for(int i=beg+1;i<n-(k-deepth);i++){
dfs(deepth+1, summerize+l[i], i);
}
}
signed main(){
init();
cin>>n>>k;
for(int i=1;i<=n;i++){
int tmp;cin>>tmp;
l.push_back(tmp);
}
dfs(0, 0, 0);
cout<<ans;
return 0;
}
样例可过, 提交只有1个Task能过
求大佬帮忙看看是不是dfs写错了