【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;
}
posted @ 2018-05-24 13:27  gwj1139177410  阅读(120)  评论(0编辑  收藏  举报
选择