题目链接:https://www.luogu.org/problemnew/show/P1036

主要考两个知识点:判断一个数是否为素数、从n个数中选出m个数的组合

判断一个数是否为素数:

素数一定是6n+1或者6n-1

如果是6n,则可以被6整除

如果是6n+2,可以被2整除

如果是6n+3,可以被3整除

如果是6n+4,可以被2整除

而6n+5等同于6n-1

组合数:

参考博客:https://zhidao.baidu.com/question/487981533.html

采用递归,从n个数里选出下标最大的一个数,从n-1个数里再选出下标最大的一个数,直到剩余n-m+1个数,再选出最后一个

如此反复,直到最大的下标为m

代码如下:

#include<cstdio>
#include<cmath>
#define MAXN 500
using namespace std; int M;
int cnt;bool isPrime(int num)
{if(num <= 3){return num > 1;}if(num % 6 != 1 && num % 6 != 5){return false;}int x = (int)sqrt(num);for(int i = 5; i <= x; i += 6){if(num % i == 0 || num % (i+2) == 0){return false;}}return true;
}void combine(int a[], int n, int m, int b[])
{for(int i = n; i >= m; i--){b[m-1] = i-1;//b数组存储的是元素下标 if(m > 1){combine(a, i-1, m-1, b);}else{int sum = 0;for(int j = M-1; j >= 0; j--){sum += a[b[j]];}if(isPrime(sum)){cnt ++;}}}
}int main()
{int n, m;scanf("%d%d", &n, &m);M = m;int a[30], b[30];for(int i = 0; i < n; i++){scanf("%d", &a[i]);}combine(a, n, m, b);printf("%d\n", cnt);return 0;
} 

有任何疑问请站内联系或者邮箱:zhuo2333@qq.com

转载于:https://www.cnblogs.com/PineZhuo/p/10433739.html

洛谷P1036选数(素数+组合数)相关推荐

  1. 洛谷 P1036 选数

    P1036 选数 题目描述 已知 n 个整数 x1,x2,-,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别 ...

  2. 洛谷 - P1036 选数(递归)

    题目链接:点击查看 题目大意:给出n个数,我们需要从中选k个作为一个新的集合,问新集合的权值和有多少是素数 题目分析:这个题目考考察了两点: 判断素数 设计递归 为什么把判断素数单独列出来了呢?因为一 ...

  3. 洛谷P1036选数题解--zhengjun

    题目描述 已知 nnn 个整数 x1,x2,-,xnx_1,x_2,-,x_nx1​,x2​,-,xn​,以及111 个整数 kkk (k<nk<nk<n).从 nnn 个整数中任选 ...

  4. 【洛谷】选数---深度优先搜索+单调不降去重

    题目描述 传送门:https://www.luogu.com.cn/problem/P1036 已知n个整数x1,x2-xn,以及一个整数k(k<n).从n个数字中任选k个数字相加,可分别得到一 ...

  5. #快速幂,eratosthenes筛#bzoj 3930 洛谷 3172 选数

    题目 从区间 [ l ∼ r ] [l\sim r] [l∼r]中选取 n n n个整数,总共有 ( r − l + 1 ) n (r-l+1)^n (r−l+1)n种方案.问最大公约数刚好为 k k ...

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

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

  7. 深度优先搜索——选数(洛谷 P1036)

    今天的题是一道深度优先搜索的题 题目链接 选自洛谷(P1036) 是一道很经典的DFS问题 首先我们先看一下题目是怎么描述的,读完题目我会在后面给出详细的思路! 题目描述 已知 nn 个整数 x_1, ...

  8. 信息学奥赛一本通 1321:【例6.3】删数问题(Noip1994) | 洛谷 P1106 删数问题

    [题目链接] ybt 1321:[例6.3]删数问题(Noip1994) 洛谷 P1106 删数问题 [题目考点] 1. 贪心 [解题思路] 解法1:每次找k+1个数中的最小值 假设我们从左向右扫描每 ...

  9. 洛谷省选斗兽场全通关祭~以及之后的打算!

    18/5/2:洛谷省选斗兽场全通关祭! 洛谷也算是坚持了下去,到现在为止已经是有244道题AC了. 虽然我各大oj的刷题量加在一起也没有大佬的十分之一,我的智商也不及大佬的百分之一,但是相信智商刷也是 ...

最新文章

  1. UrlUtils工具类,Java URL工具类,Java URL链接工具类
  2. C语言常见单链表面试题(2)
  3. c语言和gtk实现的游戏,Ubuntu下用glade和GTK+开发C语言界面程序(一)
  4. 【windows】安装pytorch1.7.1-cpu版本的geometric过程记录
  5. iframe带了token不显示_不就是登录吗,能有多复杂?sa-token带你轻松搞定多地登陆、单地登录、同端互斥登录...
  6. __main代码分析
  7. js合并对象中有相同key值的_js 深比较和浅比较
  8. java项目中使用kettle的JNDI连接配置
  9. Node.js nvshens图片批量下载爬虫 1.00
  10. 快逸报表4.0 分组处理
  11. Jenkins的定时构建与轮询SCM
  12. C语言实现入门级小游戏——扫雷(排行榜+玩家自定义难度+递归展开一片+标记地雷)版本
  13. ora01033是什么错误linux,ora-01033错误的解决办法
  14. 产品经理如何写好一份简历
  15. python实现简易万年历_Python编程——万年历
  16. 多张图片合成一张jpg工具_如何将两张图片合成一张图片?
  17. bluez5.50+pulseaudio实现蓝牙音响音频播放
  18. [系统安全] 逆向工程进阶篇之对抗逆向分析
  19. 移动应用的引导模式设计
  20. 万豪国际亚太区第1000家酒店开业!总客房数量超一半在中国 | 美通社头条

热门文章

  1. NodeJs开发微信公众号(一)
  2. 【译】Angular 5 新特性
  3. 【Java 基础篇】【第一课】HelloWorld
  4. A+B Problem III
  5. Linux统计文件行数
  6. Javascript 的addEventListener()及attachEvent()区别分析
  7. expand yourself
  8. ASP.Net中让网页“立即过时”
  9. PHP 使用 Redis
  10. SpringCloud微服务注册中心如何承载大型系统的千万级访问?源码及原理分析