当前位置: 首页 > news >正文

题解:洛谷 P1036 [NOIP 2002 普及组] 选数

【题目来源】

洛谷:P1036 [NOIP 2002 普及组] 选数 - 洛谷 (luogu.com.cn)

【题目描述】

已知 \(n\) 个整数 \(x_1,x_2,\dots,x_n\),以及 \(1\) 个整数 \(k(k\lt 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\le n\le 20, k\lt n)\)

第二行 \(n\) 个整数,分别为 \(x_1,x_2,\dots, x_n(1\le x_i\le 5\times 10^6)\)

【输出】

输出一个整数,表示种类数。

【输入样例】

4 3
3 7 12 19

【输出样例】

1

【解题思路】

image

【算法标签】

《洛谷 P1036 选数》 #搜索# #深度优先搜索,DFS# #素数判断,质数,筛法# #NOIP普及组# #2002#

【代码详解】

#include <bits/stdc++.h>
using namespace std;// 定义全局变量
int n, k, a[25], ans = 0;  // n:数字个数, k:选取数量, a:存储数字, ans:结果计数器// 素数判定函数
bool judge(int num) {if (num < 2) return false;  // 小于2的数不是素数for (int i = 2; i <= sqrt(num); i++) {  // 只需检查到平方根if (num % i == 0) return false;  // 能被整除则不是素数} return true;  // 否则是素数
}// 组合枚举函数(递归实现)
void f(int flag, int num, int sum) {// flag:当前起始位置, num:剩余需要选择的数字个数, sum:当前累计和// 终止条件:已选够k个数字if (num == 0) {if (judge(sum)) ans++;  // 如果和为素数则计数return;}// 剪枝:剩余数字不足以选够k个if (n - flag + 1 < num) return;// 递归枚举所有可能的组合for (int i = flag; i <= n; i++) {f(i + 1, num - 1, sum + a[i]);  // 选择当前数字,递归处理后续}return;
}int main() {// 输入数据cin >> n >> k;for (int i = 1; i <= n; i++) {cin >> a[i];  // 读取数字序列}// 从第一个数字开始枚举所有k个数字的组合f(1, k, 0);// 输出满足条件的组合数量cout << ans;return 0;
}

【运行结果】

4 3
3 7 12 19
1
http://www.jsqmd.com/news/389896/

相关文章:

  • 题解:洛谷 P1618 三连击(升级版)
  • lanqiaoOJ 1020:阶乘约数 ← 整数唯一分解定理 + 约数个数定理
  • 题解:洛谷 P2241 统计方形(数据加强版)
  • 综述不会写?千笔,王者级的AI论文写作软件
  • 定稿前必看!更贴合继续教育的AI论文平台,千笔·专业论文写作工具 VS WPS AI
  • 08]delphi10.3剪贴板的图片,保存到文件
  • 评测2026年主流安检设备,揭秘可靠直销渠道,安检门/智能安检/安检仪/金属探测门/安检设备,安检设备源头厂家哪家好 - 品牌推荐师
  • 数据码农马年大吉
  • 定稿前必看!9个降AIGC工具测评:本科生降AI率必备指南
  • 导师推荐!继续教育论文神器 —— 千笔AI
  • 格式总出错?千笔AI,全民喜爱的AI论文写作软件
  • 新手也能上手 9个降AI率工具:研究生降AI率全维度测评
  • 生产环境VSCode中ESLint与Prettier冲突终极解决方案(90%开发者都踩过的坑)最佳实践与性能优化
  • 导师推荐 10个 AI论文写作软件:研究生毕业论文与科研写作必备工具测评
  • 吐血推荐! AI论文平台 千笔AI VS speedai,自考写论文必备神器!
  • 拖延症福音!降AI率平台 千笔AI VS PaperRed,自考党必备
  • AI岗位真的比网安岗位强多了?我们是否该“All in AI Agent”?——一场关于技术趋势、安全边界与职业选择的深度思辨
  • 用数据说话 AI论文写作软件 千笔ai写作 VS Checkjie 更贴合自考需求
  • 科研党收藏!千笔AI,冠绝行业的降AI率平台
  • 深入解析:Linux:信号保存下(信号二)
  • Metasploit Framework 6.4.115 (macOS, Linux, Windows) - 开源渗透测试框架
  • 【Windows】终末地导致的System进程异常高占用内存和磁盘资源##36
  • Go错误处理与日志记录:构建健壮且可观测的应用
  • Nodejs+vue3的云端网上书城 图书商城销售听书系统
  • 2026必备!千笔,自考降重神器 —— 风靡全网
  • Nodejs+vue3的家政系统的设计与实现开题
  • 如何在豆包做广告推广?怎么联系豆包AI获客服务商? - 品牌2025
  • 网络安全一周要闻:ATM恶意软件、暴露的AI系统与微软Office零日漏洞
  • 2026更新版!9个AI论文平台测评:专科生毕业论文写作必备工具推荐
  • 【CSDN创作者成长】-什么你还在手动加目录标签?