#include <bits/stdc++.h>
using namespace std;
const int N = 9999;
int a[N];
bool pd[N];
int haif[N];
int n, k, sum = 0, ans = 0;
int f (int y)
{
if (y == 1)
return false;
if (y == 0)
return false;
for (int i = 2; i <= sqrt(y); i++)
{
if (y % i == 0)
return false;
}
return y;
}
void dfs (int x, int d)
{
if (x == k + 1)
{
sum = 0;
for (int i = 1; i <= k; i++)
{
sum = sum + haif[i];
}
if (f(sum) != 0)
ans++;
return ;
}
for (int i = d + 1; i <= n; i++)
{
if (!pd[i])
{
pd[i] = 1;
haif[x]= a[i];
dfs(x + 1, i);
pd[i] = 0;
}
}
}
int main ()
{
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
dfs(1, 0);
cout << ans << endl;
return 0;
}
dfs-选数
最新推荐文章于 2024-07-18 20:38:17 发布