WA求助
查看原帖
WA求助
1047309
return_second楼主2024/1/16 16:17
#include <iostream>
using namespace std;
bool is[21];
int a[21],n,k,maxn=-1e9,ans=0;
long long sum=0;
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 begin,int m)
{
	if(m==k&&isPrime(sum))
	{
		ans++;
		//printf("%lld***\n",sum);调试用
		sum=0;
		return;
	}							
	for(int i=begin;i<=n;i++)	
		if(!is[i])
		{
			sum+=a[i];
			is[i]=true;
			dfs(i+1,m+1);
			sum-=a[i];
			is[i]=false;
		}
}
int main()
{	
	scanf("%d%d",&n,&k); 
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	dfs(1,1);		
	printf("%d\n",ans);
	return 0;
}

2024/1/16 16:17
加载中...