选数位运算优化
  • 板块灌水区
  • 楼主never_check
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/3 14:37
  • 上次更新2023/11/2 16:19:02
查看原帖
选数位运算优化
539861
never_check楼主2023/10/3 14:37

大佬看一下

#include<bits/stdc++.h>
using namespace std;
const int y=10007;
int a[2005],b[2005],cnt=0;
int n,k;
bool prime(int can){
	if(can<=1){
		return 0;
	}
	for(int i=2;i*i<=can;i++){
		if(can%i==0){
			return 0;
		}
	}
	return 1;
}
void dfs(int cur,int jin,int sum){
	if(cur==k){
		if(prime(sum)==1)cnt++;
		return ;
	}
	for(int i=jin;i<n;i++){
		if(b[i]==0){
			b[i]=1;
			dfs(cur+1,i,sum+a[i]);
			b[i]=0;
		}
	}
}
int main(){	
	cin>>n>>k;
	for(int i=0;i<n;i++){
		cin>>a[i];
	} 
	sort(a,a+n) ;
	dfs(0,0,0);
	cout<<cnt<<endl;
	
	return 0;
}
2023/10/3 14:37
加载中...