16分,求调
查看原帖
16分,求调
557069
ouiostream楼主2024/10/20 20:20
#include <iostream>
using namespace std;
bool u[10010];
long long n,k,a[10010],ans;
bool prime(int x){
	if(x==0||x==1)return 0;
	if(x==2)return 1;
	for(int i=2;i*i<=x;i++){
		if(x%i==0)return 0;
	}
	return 1;
}
void dfs(int x,int step){
	int dx;
	if(step>=k){
		if(step==k){
			if(prime(x))ans++;
		}
		else return;
	}
	for(int i=1;i<=n;i++){
		dx=x+a[i];
		if(step<=k){
			if(u[i]==true){
				u[i]=false;
				step++;
				dfs(dx,step);
				u[i]=true;
				step--;
			}	
		}
	}
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		u[i]=true;
	}
	dfs(0,0);
	cout<<ans<<endl;
	return 0;
}
2024/10/20 20:20
加载中...