67pts求助!
查看原帖
67pts求助!
933808
Earth2023楼主2024/10/8 21:56
#include <iostream>
using namespace std;

bool flag[5000005] = {0};
int a[25], inArr[25];
int n, k, ans;

void dfs(int ip) {
	if (ip > k) {
		int sum = 0;
		for (int i = 1; i <= k; i++) {
			sum += a[i];
		}
		for (int i = 1; i <= n; i++) {
			cout << flag[i] << ' ';
		}
		cout << endl;
		bool fl = true;
		for (int i = 2; i * i < sum; i++) {
			if (sum % i == 0) fl = false;
		}
		if (fl) ans++;
		return;
	}
	for (int i = 1; i <= n; i++) {
		if (flag[i] == 1 or (i < a[ip - 1])) continue;
		a[ip] = inArr[i];
		flag[i] = 1;
		dfs(ip + 1);
		flag[i] = 0;
	}
}

int main() {
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		cin >> inArr[i];
	}
	dfs(1);	
	cout << ans << endl;
	return 0;
}
2024/10/8 21:56
加载中...