#include<iostream>
#include<math.h>
using namespace std;
int n,k;
int num[21];
bool ans[21];
int solution = 0;
int sum=0;
bool isPrime(int x){
if(x==1||x==0)
return false;
for(int i=2;i<=sqrt(double(x));i++){
if(x%i==0)
return false;
}
return true;
}
void Prime(int index,int startx){
if(index==k){
if(isPrime(sum))
solution++;
}
for(int i=startx;i<n;i++){
if(ans[i]==true)
continue;
sum+=num[i];
ans[i]=true;
Prime(index+1,startx+1);
sum-=num[i];
ans[i]=false;
}
}
int main(){
cin>>n>>k;
for(int i=0 ; i<n ; i++){
cin>>num[i];
ans[i]=false;
}
Prime(0,0);
cout<<solution<<endl;
return 0;
}
在自己编译器上结果是正确的,结果提交答案一个测试点都过不了……是没考虑全面吗?