16分
查看原帖
16分
1017173
wscmh楼主2023/11/11 18:32

上代码

#include<bits/stdc++.h>
using namespace std;
int n,k,l=0;
int a[25];
int vis[25];
int c[25];
int Ans=0;
int d[20+5];
bool pd(int x){
	for(int i=2;i*i<=x;i++){
		if(x%i==0){
			return false;
		}
	}
	return true;
}
void dfs(int xb){
	if(xb>k){
		int Anss=0;
		for(int i=1;i<=k;i++){
			Anss+=d[i];
		}
		if(pd(Anss)){ 
			Ans++;
			for(int i=1;i<=l;i++){
				if(Anss==c[i]){
					Ans--;
					return ;
				} 
			}
			l++;
			c[l]=Anss;
			return ;
		}
	}
	for(int i=1;i<=n;i++){
		if(vis[i]==0){
			d[l]=a[i];
			vis[i]=1;
			dfs(xb+1);
			vis[i]=0;
		}
	}
} 
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	dfs(1);
	cout<<Ans;
	return 0;
}
2023/11/11 18:32
加载中...