求助只有67分
查看原帖
求助只有67分
524411
龙地船仁楼主2022/5/6 15:42
#include<bits/stdc++.h>
using namespace std;
int n,k,a[21],b[21],s,s1,t;
bool vis[21];
bool f(int x){
	if(n<2) return false;
	for(int i=2;i<=sqrt(x);i++)
		if(x%i==0) return false;
	return true;
}
void dfs(int step){
	if(step==k+1){
		s=0;
		for(int i=1;i<=k;i++)
			s+=a[i];
		if(f(s)) ++s1;
		++t;
		return;
	}
	for(int i=t;i<=n;i++){
		if(vis[i]==0){
			a[step]=b[i];
			vis[i]=1;
			if(step==1 || a[step-1]<=a[step]) dfs(step+1);
			vis[i]=0;
		}
	}
	return ;
}
int main(){
	t=1;
	s1=0;
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>b[i];
    dfs(1);
    cout<<s1;
    return 0;
}
/*                    .--.
                   .-' _..`.
                  /  .'_.'.'
                 | .' (.)`.
                 ;'   ,_   `.
 .--.__________.'    ;  `.;-'
|  ./               /
|  |               / 
`..'`-._  _____, ..'
     / | |     | |\ \
    / /| |     | | \ \
   / / | |     | |  \ \
  /_/  |_|     |_|   \_\
 |__\  |__\    |__\  |__\
*/
2022/5/6 15:42
加载中...