肯定得写思路(大雾
include<bits/stdc++.h>
using namespace std; int n,k; int a[30],book[21];//a数组保存,book标记 int c[21],s; bool ss(int x)//素数函数 { if(x<2) return false; for(int i=2;i<=sqrt(x);i++) if(x%i==0) return false; return true; } void dfs(int step)//全排列模板 { if(step==k+1)//判定保存数据是否通过 { for(int i=1;i<=k;i++) if(c[i]<c[i-1])//去重 return ; int ans=0; for(int i=1;i<=k;i++) ans+=a[c[i]]; if(ss(ans))//判定是否是素数 s++; return ; } for(int i=1;i<=n;i++) { if(book[i]==0)//搜索+回溯 { c[step]=i,book[i]=1; dfs(step+1); book[i]=0; } } } int main() { cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i];//输入 dfs(1); cout<<s<<endl; }