#1 WA 来自蒟蒻的求助
查看原帖
#1 WA 来自蒟蒻的求助
868063
_Coffice_楼主2023/2/25 16:05

code:code:

#include<iostream>
using namespace std;
long long n,k;
long long x[100]; 
bool flag[100];
long long zx = 1,sum = 0,ans = 0;
bool pd(long long n){
	if(n < 2) return 0;
	else if(n==2) return 1;
	else{
		for(long long i = 2;i*i<=n;i++){
			if(n%i == 0) return 0;
		}
		return 1;
	}
}
void dfs(long long f){
	if(f > k){
		zx = 1;
		if(sum%2!=0 && sum%3!=0 && sum%5!=0){
			if(pd(sum)){
				ans++;
			}
		}
		return;
	}else{
		for(long long i = zx;i<=n;i++){
			if(flag[i] == 0){
				sum += x[i];
				zx = i;
				flag[i] = 1;
				dfs(f+1);
				sum -= x[i];
				flag[i] = 0;
			}
		}
	}
}
int main(){
	cin >> n >> k;
	for(long long i = 1;i<=n;i++) cin >> x[i];
	dfs(1);
	cout << ans;
	return 0;
}
2023/2/25 16:05
加载中...