题目为P1036
#include<bits/stdc++.h>
using namespace std;
long long a[25],b[25],id[25],n,m,sum=0,ans=0;
bool book[25];
bool s(int g){
if(g==1)return 0;
if(g==2)return 1;
if(g%2==0){
return 0;
}
for(int i=3;i<g;i+=2){
if(g%i==0){
return 0;
}
}
return 1;
}
void dfs(int k){
if(k>m){
for(int i=1;i<=m;i++){
ans+=a[i];
//cout<<a[i]<<" ";
}//cout<<"\n";
if(s(ans)==1){
sum++;
}
ans=0;
return;
}
for(int i=id[k-1]+1;i<=n;i++){
if(!book[i]){
a[k]=b[i];
id[k]=i;
book[b[i]]=true;
dfs(k+1);
book[b[i]]=false;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>b[i];
}
dfs(1);
cout<<sum;
return 0;
}
求路过的dalao帮助