【NOIP2002】【Luogu1036】选数

problem

solution

codes

#include<iostream>
using namespace std;
int n, k, a[30], ans;
int is_prime(int n){
    if(n == 1 || n == 0)return 0;
    if(n == 2)return 1;
    for(int i = 2; i*i <= n; i++)
      if(n % i == 0)return 0;
    return 1;
}
void dfs(int pos,int pps,int sum){
    if(!pos) { ans +=is_prime(sum);return ;}
    for(pps; pps <= n; pps++)dfs(pos -1,pps +1, sum + a[pps]);
}
int main(){
    cin>>n>>k;
    for(int i = 1; i <= n; i++)cin>>a[i];
    dfs(k, 1, 0);
    cout<<ans;
    return 0;
}
原文地址:https://www.cnblogs.com/gwj1314/p/9444828.html