Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
50405 | jiabokai | 练82.3 选数 | C++ | 无测评数据 | 0 MS | 0 KB | 580 | 2024-08-21 20:21:42 |
#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; }