16求条
查看原帖
16求条
988626
wjc2857楼主2025/8/2 10:56
#include<bits/stdc++.h>
using namespace std;
int n,a[10001],c[10001],sum,m,cnt;
bool b[10001];
bool zs(int x){
	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 y){
	for(int i=x;i<=n;i++){
		if(!b[i]){
			c[y]=a[i];
			y++;
			b[i]=1;
			if(y+1==m){
				cnt=0;
				for(int j=0;j<m;j++){
					cnt+=c[j];
				}
				if(zs(cnt)) sum++;
				return;
			}else dfs(x+1,y);
			b[i]=0;
			y--;
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	dfs(1,0);
	cout<<sum;
    return 0;
}
2025/8/2 10:56
加载中...