#include <bits/stdc++.h>
using namespace std;
int n,k;
int a[25];
bool isprime(int n) //判断素数
{
for(int i = 2; i*i < n; i++){
if(n % i == 0)
return false;
}
return true;
}
int cnt = 0;
int dfs(int start,int num,int sum)
{
if(num == k){
if(isprime(sum)){
cnt++; //如果选数总个数等于k 如果总和是素数则个数+1
}
}
for(int i = start; i < n; i++){ //从剩下的范围中选数
dfs(i+1,num+1,sum+a[i]); //区间开头+1 所选的个数+1
}
return cnt;
}
int main()
{
cin >> n >> k;
for(int i = 0; i < n; i++){
cin >> a[i];
}
cout << dfs(0,0,0);
return 0;
}
洛谷 P1036 选数(C++)
最新推荐文章于 2024-07-01 08:05:10 发布