题目描述 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/output
输入格式:
键盘输入,格式为:
n , k (1<=n<=20,k<n)
x1,x2,…,xn (1<=xi<=5000000)
输出格式:
屏幕输出,格式为:
一个整数(满足条件的种数)。

 输入输出样例 Sample input/output
样例测试点#1
输入样例:

4 3
3 7 12 19

输出样例:

1

思路:模拟,不解释!

代码如下:

 1 //使用数组input保存各个数字是否被用过的标志,使用数组a保存输入的数字
 2 #include <stdio.h>
 3 #include <math.h>
 4 #include <string.h>
 5 int sort=0,n,k,a[40];
 6 int sushu(int x) //是素数返回1,不是返回0
 7 {
 8     int i,y;
 9     y=sqrt(x);
10     for(i=2;i<=y;i++)
11         if(x%i==0)
12             return 0;
13     return 1;
14 }
15 void f(int input[],int pos,int m) //f(被操作数组,所在位置,选m个数)
16 {
17     if(m==0)
18     {
19         int j,sum=0;
20         for(j=0;j<n;j++)
21             if(input[j]==1)
22                 sum+=a[j];
23         if(sushu(sum)==1)
24             sort++;
25         return;
26     }
27     else
28     {
29         int i;
30         for(i=pos;i<n;i++)
31         {
32             if(input[i]==0)
33                 input[i]=1;
34                 f(input,i+1,m-1);
35                 input[i]=0;
36         }
37     }
38     return;
39 }
40 int main()
41 {
42     int input[40],i;
43     scanf("%d%d",&n,&k);
44     for(i=0;i<n;i++)
45         scanf("%d",&a[i]);
46     memset(input,0,sizeof(int)*40);
47     f(input,0,k);
48     printf("%d\n",sort);
49     return 0;
50 }    

转载于:https://www.cnblogs.com/geek-007/p/4454865.html

NOIP2002-普及组复赛-第三题-选数相关推荐

  1. 【动态规划】 摆花 【NOIp普及组 2012 第三题】 (ssl 2360/luogu 1077)

    摆花摆花摆花 题目大意 有n种花,每种花有ai支,取m支,有多少种取法?(同一种花取第1,第3支和取第1,第2支算一种取法) 解题方法: 用f[i][j]来表示前i种选j支的方案数,然后往后推 动态转 ...

  2. 【深搜】 棋盘 【NOIp普及组 2017 第三题】 (luogu 3956/ssl 2851)

    棋盘棋盘棋盘 题目大意: 有一个M*M的棋盘,要从(1,1)到(m,m),中间有n个有颜色的格子,只能踩在有颜色的格子上,跳到不同颜色的格子要花费1元,可以将前方没颜色的格子变成自己要的格子,但要花费 ...

  3. 2006 CCF NOIP普及组复赛 第1题:明明的随机数 <- 桶排序

    [问题描述] 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数 ...

  4. 泽泽在巴西(jzoj普及组模拟第三题)(超难)

    题目: 题目描述 泽泽帮助了英国某街道尽量减少酸雨的伤害,街道办主任非常感激他,就把他领到一扇门前,告诉他这扇门能通往好地方,具体好到什么程度要看泽泽人品.泽泽毫不犹豫地走了进去-- 泽泽来到了足球王 ...

  5. 信息学奥赛一本通 1919:【02NOIP普及组】选数 | 洛谷 P1036 [NOIP2002 普及组] 选数

    [题目链接] ybt 1919:[02NOIP普及组]选数 洛谷 P1036 [NOIP2002 普及组] 选数 [题目考点] 1.排列组合 2.深搜(子集树) 3.质数 [解题思路] 深搜(子集树) ...

  6. Java P1035 [NOIP2002 普及组] 级数求和 洛谷入门题

    P1035 [NOIP2002 普及组] 级数求和 题目描述 已知:Sn=1+1/2+1/3+-+1/nS_n= 1+1/2+1/3+-+1/nSn​=1+1/2+1/3+-+1/n.显然对于任意一个 ...

  7. 近年NOIP普及组复赛题目的简单讲解

    NOIP2015普及组复赛 整套题都出得不错,难度适中,层次分明 建议同学们在做题的时候还是先在草稿纸上分析,把关键算法的伪代码写出来,然后设计数据进行静态查错,没有问题后再到电脑上敲出代码.实际效率 ...

  8. NOIP 2010 普及组 复赛 sanguo 三国游戏

    NOIP 2010 普及组 复赛 sanguo 三国游戏 1.扫到他人讨论,取第2大值,且小涵必胜. 2.编码,样例通过,提交,只通过了测试点1,6. 3.看了题解,发现是武将配对中,找出配对的第2大 ...

  9. P1002 [NOIP2002 普及组] 过河卒

    P1002 [NOIP2002 普及组] 过河卒 最近在洛谷刷题,决定用博客把自己的解题思路以及踩过的坑整理总结一下~ 先来看看题目吧~ 棋盘上 AA 点有一个过河卒,需要走到目标 BB 点.卒行走的 ...

最新文章

  1. Linux字体显示不同颜色
  2. PHP版本的自动生成有规则的订单号(或编号)
  3. 第一章——数据结构之绪论
  4. Ubuntu 搭建 NVIDIA驱动 CUDA 和 pytorch GPU 环境
  5. 位运算 进制转化 STL中bitset用法
  6. python装饰器有几种_Python装饰器使用你可能不知道的几种姿势
  7. 更改android的avd的存储路径
  8. Debian5.0自动挂载U盘 - 使用pmount
  9. 计算机应用基础 项目4-5 分析商品销售业绩 ppt课件,计算机应用基础课件项目四汇总.ppt...
  10. 伪C++开发小游戏---连连看
  11. 机器翻译和自动译后编辑
  12. 海康威视监控摄像头连接电脑教程
  13. 18.8.17 考试总结
  14. 昆虫的眼睛(单眼与复眼)
  15. 银行管理系统 - 2022计科实训QT课设
  16. 【计算机网络】计算机网络-分组发送相关计算
  17. 蓝色经典钢琴-Cinesamples Piano In Blue v2.3b Kontakt
  18. Sharepoint 2013 页面置顶(Topbar)小插件
  19. 第一篇博客——C语言实现简单的学生成绩管理系统
  20. 当“性价比”失败时,小米应该如何突破?

热门文章

  1. 0bug到底碰痛了谁的神经?
  2. 话里话外:按单制造企业用什么来做生产计划
  3. 北大AI第八讲 李航 自然语言处理的现实与挑战
  4. 手机发包工具_【发包工具】http多线程发包工具
  5. 谈谈未来简书首页拒稿界面的设计思路
  6. spring与web关系
  7. 微信小程序实现浮动按钮
  8. MFC三大dll使用总结
  9. linux磁盘阵列扩容,linux raid1扩容的方法
  10. Doris之DataX doriswriter