救命,为什么66分??
查看原帖
救命,为什么66分??
102235
Mathmetastic楼主2020/10/8 18:08
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
int k,cnt,n,a[25],go=1,ans;
bool b[25];
int jc(int x)
{
	for(int i=0;i<x;i++)
	{
		go*=(x-i);
	}
}
bool checkprime(int x)
{
	bool yes=true;
	for(int i=2;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			yes=false;
			break;
		}
	}
	return yes;
}
void dfs(int step)
{
	if(step==k+1)
	{
		if(checkprime(ans)==true)
			cnt++;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(b[i]==0)
		{
			b[i]=1;
			ans+=a[i];
			dfs(step+1);
			ans-=a[i];
			b[i]=0;
		}
	}
}
int main()
{
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	dfs(1);
	cnt=cnt/jc(k);
	printf("%d",cnt);
	return 0;
 } 
2020/10/8 18:08
加载中...