求调
查看原帖
求调
731644
_cyh0412_楼主2024/7/12 10:50
#include<bits/stdc++.h>
using namespace std;

const int MAXN=25;
int n,k,a[MAXN],cnt,w[MAXN];
bool st[MAXN];

bool is_prime(int x)
{
	if (x<2) return 0;
	for (int i=2;i<=x/i;i++)
		if (x%i==0) return 0;
	return 1;
} 

void dfs(int dep)
{
	if (dep>k)
	{
		int sum=0;
		for (int i=1;i<=k;i++)
			sum+=w[i];
		if (is_prime(sum)) cnt++;
		return;
	}
	for (int i=1;i<=n;i++)
	{
		if (st[i]) continue;
		st[i]=1;
		w[dep]=a[i];
		dfs(dep+1);
		st[i]=0;
	}
}

int main()
{
	cin>>n>>k;
	for (int i=1;i<=n;i++)
		cin>>a[i];
	dfs(1);
	cout<<cnt<<endl;
	return 0;
}

AC on #2

2024/7/12 10:50
加载中...