P1036 [NOIP 2002 普及组] 选数
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n, k;
vector<int>a;
int ans = 0;
bool is_prime(int x) {
if(x < 2) return 0;
int sqrtx = sqrt(x);
for(int i = 2; i <= sqrtx; i++) {
if(x % i == 0) return 0;
}
return 1;
}
void dfs(int x, int y, int z) {
if(y == k) {
if(is_prime(z)) ans++;
return;
}
for(int i = x; i < n; i++) dfs(i + 1, y + 1, z + a[i]);
}
int main() {
cin >> n >> k;
a.resize(n);
for(int i = 0; i < n; i++) {
cin >> a[i];
}
dfs(0, 0, 0);
cout << ans << '\n';
return 0;
}