深度优先搜索,素数判定
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n,k;
int a[21];
int ans;
int tot;
bool pd(){
for(int i=2;i<=sqrt(ans);++i){
if(ans%i==0)return 0; //不是质数
}
return 1; //是质数
}
void search(int cs,int t){
for(int i=t+1;i<=n;++i){
ans+=a[i];
if(cs==k){
if(pd())tot++;
}
else{
search(cs+1,i);
}
//cout<<"层数:"<<cs<<" "<<"i="<<i<<" "<<"ans:"<<ans<<" tot:"<<tot<<'\n';
ans-=a[i]; //回溯
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;++i){
cin>>a[i];
}
search(1,0);
cout<<tot;
}