上代码
#include<bits/stdc++.h>
using namespace std;
int n,k,l=0;
int a[25];
int vis[25];
int c[25];
int Ans=0;
int d[20+5];
bool pd(int x){
for(int i=2;i*i<=x;i++){
if(x%i==0){
return false;
}
}
return true;
}
void dfs(int xb){
if(xb>k){
int Anss=0;
for(int i=1;i<=k;i++){
Anss+=d[i];
}
if(pd(Anss)){
Ans++;
for(int i=1;i<=l;i++){
if(Anss==c[i]){
Ans--;
return ;
}
}
l++;
c[l]=Anss;
return ;
}
}
for(int i=1;i<=n;i++){
if(vis[i]==0){
d[l]=a[i];
vis[i]=1;
dfs(xb+1);
vis[i]=0;
}
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
dfs(1);
cout<<Ans;
return 0;
}