16分,求调
查看原帖
16分,求调
700515
_int123_楼主2023/11/22 19:53
#include<bits/stdc++.h>
using namespace std;
int n,k,a[30];
bool q[30]={false};
int ans=0;
bool check(int n)
{
	if(n<2) return false;
	for(int i=2;i*i<=n;i++)
		if(n%i==0) return false;
	return true;
}
void dfs(int z,int sum,int t)
{
	if(t==(k+1))
	{
		if(check(sum)==true) ans++;
		return;
	}
	for(int i=z;i<=n;i++)
	{
		if(q[i]==true) continue;
		q[i]=true;
		dfs(z+1,sum+a[i],t+1);
		q[i]=false;
	}
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	dfs(1,0,1);
	cout<<ans;
    return 0;
}
2023/11/22 19:53
加载中...