超级简单,看了就会,不会就再看看
2026-10-06 17:20:21
发布于:广东
7阅读
0回复
0点赞
#include<iostream>
using namespace std;
#define ll long long
const int M = 1e5+10;
int n,k,a[25],ans;
bool prime(int x){//质数判断
if(x<2) return 0;
for(int i=2;i<x;i++){
if(x%i==0) return 0;
}
return 1;
}
//当前遍历到第idx个,已经选了有cnt个 ,当前选了cnt个数的总和
void dfs(int idx,int cnt,int sum){
//剪枝! 剩下数,全都选上了 ,都不够k个,
if(cnt + (n-idx+1) < k) return;
if(cnt==k){//停止
if(prime(sum)){
ans++;
}
return;
}
if(idx > n) return;//越界
dfs(idx+1,cnt+1,sum+a[idx]);//选
dfs(idx+1,cnt,sum);//不选的
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
dfs(1,0,0);
cout<<ans;
return 0;
}
//Tian
全部评论 3
臭鼠鼠
2天前 来自 广东
1拉完了
2天前 来自 广东
1LYZ是乐乐
2天前 来自 广东
0
☹👎👎👎
2天前 来自 广东
0
















有帮助,赞一个