提交时间:2024-08-21 20:21:42

运行 ID: 50405

#include<bits/stdc++.h> using namespace std; int n,k,ans; bool vis[25]; int a[25],b[25]; bool prime(int n){ for(int i=2;i*i<=n;i++){ if(n%i==0){ return false; } } return true; } void dfs(int x){ if(x==k+1){ int sum=0; for(int i=1;i<x;i++){ sum+=a[b[i]]; } if(prime(sum)){ ans++; } return ; } for(int i=1;i<=n;i++){ if(!vis[i]&&i>b[x-1]){ vis[i]=true; b[x]=i; dfs(x+1); vis[i]=false; } } } int main(){ cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i]; } dfs(1); cout<<ans; return 0; }