67分求助
查看原帖
67分求助
1049483
MZL1234楼主2024/7/27 16:19
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
long long n,k,sum=0,ans=0,x[N];
bool pd(int a){
	if(a==1||a==0) return 0;
	if(a==2) return 1;
	for(int i=1;i<n;i++){
		if(a%i==0){
			if(i!=1&&i!=a) return 0;
		}
	}
	return 1;
}
void dfs(int step,int t){
	if(step==k){
		if(pd(ans)) sum++;
		return;
	}
	for(int i=t;i<n;i++){
		ans+=x[i];
		dfs(step+1,i+1);
		ans-=x[i];
	}
}
int main(){
	cin>>n>>k;
	long long suv=0,m=0;
	for(int i=0;i<n;i++){
		cin>>x[i];
		if(x[i]%2==0) suv++;
		if(x[i]==2) m=1;
	}
	if((suv==n&&m==1&&k>1)||k==0){
		cout<<0;
		return 0;
	}
	else if(suv==n&&m==1&&k==1){
		cout<<1;
		return 0;
	}
	dfs(0,0);
	cout<<sum;
	return 0;
}
2024/7/27 16:19
加载中...