zoukankan      html  css  js  c++  java
  • 选数 2002年NOIP全国联赛普及组

    题目描述 Description

    已知 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)。

    输入描述 Input Description

     键盘输入,格式为:
      n , k (1<=n<=20,k<n)
      x1,x2,…,xn (1<=xi<=5000000)

    输出描述 Output Description

    屏幕输出,格式为:
      一个整数(满足条件的种数)。

    样例输入 Sample Input

    4 3
    3 7 12 19

    样例输出 Sample Output

    1

    数据范围及提示 Data Size & Hint

    (1<=n<=20,k<n)
    (1<=xi<=5000000)

    有技巧的深搜加素數判斷。

    代碼實現:

     1 #include<cstdio>
     2 using namespace std;
     3 int n,k,ans,s[30];
     4 bool v[30010];
     5 void dfs(int x,int y,int z){
     6     if(y==k){
     7         if(!z||z==1||((z%2==0)&&z!=2)) return;
     8         for(int i=3;i*i<=z;i+=2)
     9         if(z%i==0) return;
    10         ans++;return;
    11     }
    12     for(int i=1;i<=n;i++){
    13         if(!v[i]&&i>x){
    14             v[i]=1;
    15             dfs(i,y+1,z+s[i]);
    16             v[i]=0;
    17         }
    18     }
    19 }
    20 int main(){
    21     scanf("%d%d",&n,&k);
    22     for(int i=1;i<=n;i++) scanf("%d",&s[i]);
    23     dfs(0,0,0);
    24     printf("%d
    ",ans);
    25     return 0;
    26 }
    View Code

    不大會來著。

  • 相关阅读:
    结构体
    Springmvc中异常处理
    SpringMVC的Controller方法返回值的3种类型
    SpringMVC的参数绑定
    @RequestParam用法与@PathVariable用法的区别
    springMVC架构(三大组件)
    springMVC入门程序开发步骤
    @RequestMapping的三个用法
    web.xml标签
    小笔记2(Servlet)
  • 原文地址:https://www.cnblogs.com/J-william/p/6068407.html
Copyright © 2011-2022 走看看