#include<iostream>
using namespace std;
int a[30];
int n, k;
int cnt;
bool isprime(int n)
{
for (int i=2; i*i <= n; i ++)
if (n%i == 0)
return false;
return true;
}
void dfs(int u, int sum, int last)
{
if (u>k)
{
if (isprime(sum))
cnt ++;
return ;
}
for (int i=last; i <= n; i ++)
{
dfs(u+1, sum + a[i], i+1);
}
}
int main()
{
cin >> n >> k;
for (int i=1; i <= n; i ++)
cin >> a[i];
dfs(1, 0, 1);
cout << cnt;
return 0;
}
P1036 [NOIP2002 普及组] 选数【教你从伪代码 --> 原代码】
最新推荐文章于 2024-08-14 11:57:07 发布