P1036 [NOIP2002 普及组] 选数

题目描述

已知 n 个整数x1​,x2​,⋯,xn​,以及 1 个整数 k(k

3+7+12=22

3+7+19=29

7+12+19=38

3+12+19=34

现在,要求你计算出和为素数共有多少种。

例如上例,只有一种的和为素数:3+7+19=29。

输入格式

第一行两个空格隔开的整数 n,k(1≤n≤20,k

第二行 n 个整数,分别为x1​,x2​,⋯,xn​(1≤xi​≤5×106)。

输出格式

输出一个整数,表示种类数。

输入输出样例

输入 #1复制

4 3
3 7 12 19

输出 #1复制

1

说明/提示

【题目来源】

NOIP 2002 普及组第二题

 

 深搜

#include 
#include 
#include 
#include 
using namespace std;
constexpr int N=25;
int n,k,z=0,s[N],st[N],sum=0,ans=0;
bool pd(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 start){
    if(u==k){
        if(pd(sum))
            ans++;
        return;
    }
    for(int i=start;i

 

你可能感兴趣的:(算法)