P1036 选数

时间:2022-07-24
本文章向大家介绍P1036 选数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

就是不断选取满足个数得数并进行判断是否为素数

#include <bits/stdc++.h>

using namespace std;

bool isprime(int a){
    for(int i=2;i*i<=a;i++)
        if(a%i==0)
            return false;
    return true;
}

int n,k;
int a[25];
long long ans;

void dfs(int m,int sum,int startx){
    if(m==k){
        if(isprime(sum))
            ans++;
        return ;
    }
    for(int i=startx;i<n;i++)
        dfs(m+1,sum+a[i],i+1);
    return ;
}

int main(){
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    dfs(0,0,0);
    printf("%dn",ans);
    return 0;
}