苦呀西!苦呀西!为什么和测试点结果一样但不给过!求救
查看原帖
苦呀西!苦呀西!为什么和测试点结果一样但不给过!求救
1446413
BLUE_BANBOO楼主2024/10/25 20:05
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n,k,a[30];
ll ans;
//简单素数筛法 
bool isprime(int n){
	if (n == 1) return false;
	for (int i = 2;i * i <= n;++i){
		if (n % i == 0) return false;
		return true;
	}
}
void dfs(int num,int sum,int start_n){
	//通过不降原则排列去重,strat_n为不降原则下的第一个数
	//num是当前选择数个数
	//sum是当前数值和
	if (num == k){
		if (isprime(sum)) ans++;
		return;
	}
	for (int i = start_n;i < n;++i) dfs(num + 1,sum + a[i],i + 1);
	return;
}
int main(){
	cin >> n >> k;
	for (int i = 0;i < n;++i){
		cin >> a[i];
	}
	dfs(0,0,0);
	cout << ans;
	return 0;
}
2024/10/25 20:05
加载中...