P1036 選數
阿新 • • 發佈:2018-12-09
#include<bits/stdc++.h> using namespace std; bool isprime(int a){ if(a==1) return false; for(int i=2;i<=sqrt(a);i++){ if(a%i==0) return false; } return true; } int n,k; int cnt=0; vector<int> ppp,temp; void dfs(int index,int num,int sum){ if(num==k){ if(isprime(sum)==true) cnt++; return; } if(num>k||index>=n) return; temp.push_back(ppp[index]); dfs(index+1,num+1,sum+ppp[index]); temp.pop_back(); dfs(index+1,num,sum); } int main() { freopen("in.txt","r",stdin); cin>>n>>k; ppp.resize(n); for(int i=0;i<n;i++){ cin>>ppp[i]; } dfs(0,0,0); cout<<cnt; return 0; }