zoukankan      html  css  js  c++  java
  • 洛谷—— P1036 选数 || Vijos——选数

    https://vijos.org/p/1128||

    https://www.luogu.org/problem/show?pid=1036#sub

    描述

    已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:
    3+7+12=22  3+7+19=29  7+12+19=38  3+12+19=34。

    现在,要求你计算出和为素数共有多少种。

    例如上例,只有一种的和为素数:3+7+19=29)。

    格式

    输入格式

    n , k (1<=n<=20,k<n)
    x1,x2,…,xn (1<=xi<=5000000)

    输出格式

    一个整数(满足条件的种数)。

    样例1

    样例输入1

    4 3
    3 7 12 19
    

    样例输出1

    1
    

    限制

    每个测试点1s

    来源

    noip2002普及组第二题

    水一下普及组

     1 #include <cstdio>
     2 
     3 using namespace std;
     4 
     5 int n,k,sum,ans;
     6 int num[25];
     7 
     8 bool jud(int x)
     9 {
    10     for(int i=2;i*i<=x;i++)
    11         if(x%i==0) return false;
    12     return true;
    13 }
    14 
    15 void DFS(int pos,int cnt)
    16 {
    17     if(cnt==k&&jud(sum))
    18     {
    19         ans++;
    20         return ;
    21     }
    22     for(int i=pos+1;i<=n;i++)
    23     {
    24         sum+=num[i];
    25         DFS(i,cnt+1);
    26         sum-=num[i];
    27     }
    28 }
    29 
    30 int main()
    31 {
    32     scanf("%d%d",&n,&k);
    33     for(int i=1;i<=n;i++) scanf("%d",num+i);
    34     DFS(0,0);
    35     printf("%d",ans);
    36     return 0;
    37 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    吃货联盟订餐系统
    第一章课后习题
    hostapd阅读(openwrt)-1
    通过C语言获取MAC地址(转)
    OpenWrt 编译分割
    ubuntu 12.04无盘工作站
    WEB前端性能优化-如何提高页面加载速度
    HTML6
    easyui 根据值查找匹配
    收藏的网站
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6937498.html
Copyright © 2011-2022 走看看