33 分求调!!
查看原帖
33 分求调!!
559503
j_steady楼主2022/4/5 18:35

using namespace std;           
int n,k;
int num=1;
int sum;
int ans=0;
int a[25];
//map<int,int> iss;
map<int,int> f;
/*void Era(int x){
	is[1]=is[0]=1;
	for(int i=1;i*i<=x;i++){
		if(is[i]==0){
			for(int j=i<<1;j<=x;j+=i){
				is[j]=1;
			}
		}
	}
}*/
bool isprime(int x){
	if(x==2) return 1;
	for(int i=2;i*i<=x;i++){
		if(x%i==0) return false;
	}
	return true;
}
void dfs(int aa){
	sum+=aa;
	k--;
	if(k==0){
		if(isprime(sum)) {
			ans++;
		}
		return;
	}
	for(int i=1;i<=n;i++){
		if(!f[i]){
			f[i]=1;
			dfs(a[i]);
			k++;
			sum-=a[i];
			f[i]=0;
		}
		
	}
}
int main (){
	scanf("%d%d",&n,&k);
//	int kk=k;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}	
	for(int i=1;i<=n;i++){
		f[i]=1;
		dfs(a[i]);
		f[i]=0;
	}
	 printf("%d",ans);
	return 0;
} 
2022/4/5 18:35
加载中...