acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 简易深搜(无优化)

    #include<bits/stdc++.h> using namespace std; const int maxn = 1e5 + 15; int a[maxn],n,k,ans = 0,arr[maxn]; bool vis[maxn]; bool isim(int x){ if(x < 2) return 0; if(x == 2) return 1; for(int i = 2;i * i <= x;i++) if(x % i == 0) return 0; return 1; } void f(int x){ if(x == k + 1){ int sum = 0; for(int i = 1;i <= k;i++) sum += arr[a[i]]; if(isim(sum)) ans++; sum = 0; return; } for(int i = 1;i <= n;i++){ if(!vis[i] && i > a[x - 1]){ vis[i] = 1; a[x] = i; f(x + 1); vis[i] = 0; } } } int main(){ scanf("%d%d",&n,&k); for(int i = 1;i <= n;i++){ scanf("%d",&arr[i]); } sort(arr + 1,arr + 1 + n); f(1); printf("%d",ans); return 0; }

    userId_undefined

    137****0822

    时间刺客
    3阅读
    0回复
    0点赞
首页