P1063选数

版权声明:转载请注明原文地址即可,要是本文对您有些许帮助的话,请您在下方点个赞,谢谢啦ヾ(o◕∀◕)ノヾ https://blog.csdn.net/qq_33583069/article/details/88584612
#include<bits/stdc++.h>
using namespace std;
int a[20],n,k;bool vis[20];
bool isPrime(int x){
	int M=sqrt(x+0.5);
	for(int i=2;i<=M;i++)if(x%i==0)return false;
	return true;
}
int dfs(int cur,int pos,int sum){
	if(!cur){
		if(isPrime(sum))return 1;
		else return 0;
	}
	int ans = 0;
	for(int i=pos;i<n;i++)if(!vis[i]){
		vis[i]=true;
		ans+=dfs(cur-1,i+1,sum+a[i]);
		vis[i]=false;
	}
	return ans;
} 
int main(){
	cin>>n>>k;
	for(int i=0;i<n;i++)cin>>a[i];
	cout<<dfs(k,0,0);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_33583069/article/details/88584612
今日推荐