4个WA求调
查看原帖
4个WA求调
1097884
shuhao楼主2024/8/1 11:21

33分

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int N = 30;
int n, k, a[N];
int num[N];
set <ll> sum; // set自动去重 
bool vis[N];

bool isp(int x) { // 判断是否为素数 
	if(x < 2) return false;
	for(int i = 2; i*i <= x; i++)
		if(x%i == 0)
			return false;
	return true;
}

void dfs(int x) { // 第 x 个加数 
	if(x > k) {
		ll s = 0;
		for(int i = 1; i <= k; i++) s += num[i];
		if(isp(s)) sum.insert(s);
		return;
	}
	for(int i = 1; i <= n; i++) {
		if(vis[i] == true) continue;
		num[x] = a[i];
		vis[i] = true;
		dfs(x+1);
		vis[i] = false;
	}
}

int main() {
	cin >> n >> k;
	for(int i = 1; i <= n; i++) cin >> a[i];
	dfs(1);
	cout << sum.size();
	
	return 0;
}
2024/8/1 11:21
加载中...