16分求条
查看原帖
16分求条
1274914
封禁用户楼主2025/8/1 11:57
#include<bits/stdc++.h>
using namespace std;
int n,k,a[25],visited[25],ans;
bool check(int a){
    if(a<2) return 0;
	for(int i=2;i*i<a;i++){
		if(a%i==0)return 0;
	}
	return 1;
}
void dfs(int x,int cnt,int sum){
	if(cnt>k){
		if(check(sum)){
			ans++;
		}
		return;
	}
	for(int i=x;i<=n;i++){
		if(visited[i]==0){
			visited[i]=1;
			dfs(i+1,cnt+1,sum+a[i]);
			visited[i]=0;
		}
	}
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	dfs(1,0,0);
	cout<<ans;
	return 0;
}
2025/8/1 11:57
加载中...