玄关求调
查看原帖
玄关求调
1259500
wayne123456楼主2024/11/6 10:01
#include <bits/stdc++.h>
using namespace std;
bool judge(int a)
{
	if(a<=2)
		return false;
	for(int i=2;i*i<=a;i++)
		if(a%i==0)
			return false;
	return true;
}
int a[25],cnt,file[25],n,k;
bool vis[25];
void dfs(int now)
{
	if(now>k)
	{
		int tmp=0;
		for(int i=1;i<=k;i++)
			tmp+=file[i];
		if(judge(tmp))++cnt;
		return ;
	}
	else
	{
		for(int i=1;i<=n;i++)
		{
			if(!vis[i]&&a[i]>=file[now-1])
			{
				vis[i]=true;
				file[now]=a[i];
				dfs(now+1);
				vis[i]=false;
			}
		}
	}
} 
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    dfs(1);
    cout<<cnt;
    return 0;
}

2024/11/6 10:01
加载中...