#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' using namespace std; const int N=2e5+10,M=1e3+10; int ans=0; int a[N]; int n,k; bool is_prime(int x) { if(x<2)return false ; for(int i=2;i<=x/i;i++) { if(x%i==0) return false ; } return true; } void dfs(int cnt,int sum,int st) { if(cnt==k) { if(is_prime(sum)) ans++; return ; } for(int i=st;i<=n;i++) { dfs(cnt+1,sum+a[i],i+1); } return; } signed main() { std::ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>n>>k; for(int i=1;i<=n;i++) { cin>>a[i]; } //为什么要规定顺序:因为是组合型枚举,比如题目样例3 + 7 + 19满足,那么 7 + 3 + 19就不行。 //cnt,sum,st dfs(0,0,1); cout<<ans<<endl; return 0; }
P1036 [NOIP2002 普及组] 选数
于 2024-04-05 19:23:38 首次发布