16分代码:
#include<iostream>
using namespace std;
const int maxn = 30;
int a[maxn];
bool vis[maxn];
int s = 0, ans = 0;
int n, k;
bool isOk(int l){
if(l == 1) return false;
if(l == 2) return true;
for(int i = 2; i*i <= l; i++){
if(l%i == 0) return false;
}
return true;
}
void f(int x, int y){
if(x == k+1){
if(isOk(s) == true){
ans++;
}
}else{
for(int i = y; i <= n; i++){
if(vis[i] == 0){
vis[i] = 1;
s += a[i];
f(x+1, y+1);
vis[i] = 0;
s -= a[i];
}
}
}
}
int main(){
cin >> n >> k;
for(int i = 1; i <= n; i++) cin >> a[i];
f(1, 1);
cout << ans;
return 0;
}