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

一本通1919:【02NOIP普及组】选数

这道题感觉很好玩。

正文:

先放题目:

信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)icon-default.png?t=N6B9http://ybt.ssoier.cn:8088/problem_show.php?pid=1919

描述

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

输出

屏幕输出,格式为:

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

输入样例

4 3
3 7 12 19

输出样例

1

看到这道题第一感就是和另一道题特别特别特别像,大家可以看看

信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)icon-default.png?t=N6B9http://ybt.ssoier.cn:8088/problem_show.php?pid=1317

其实就是把求出的排列不输出,求出来哪些是质数就行了。

思路:

用深度优先搜索(dfs)求出所有的组合,最后求解即可。

代码:

判断质数

void isprime(int x)
{for(int i=2;i<=sqrt(x);i++){if(x%i==0) return;}res++;
}

搜索

//基本上和组合的输出没什么区别,只是把输出的地方改成判断质数
void dfs(int step,int pre)
{y=0;if(step>=k){for(int i=0;i<k;i++) y+=x[i];isprime(y);return;}for(int i=pre+1;i<=n;i++){x[step]=a[i];dfs(step+1,i);}
}

主函数


int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d",&a[i]);dfs(0,0);printf("%d",res);return 0;
}

完整的代码

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<stack>
#include<queue>
using namespace std;const int N=25;
int res,n,k,a[N],x[N],y;void isprime(int x)
{for(int i=2;i<=sqrt(x);i++){if(x%i==0) return;}res++;
}
void dfs(int step,int pre)
{y=0;if(step>=k){for(int i=0;i<k;i++) y+=x[i];isprime(y);return;}for(int i=pre+1;i<=n;i++){x[step]=a[i];dfs(step+1,i);}
}int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d",&a[i]);dfs(0,0);printf("%d",res);return 0;
}	

没登陆的复制链接

云剪贴板 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)icon-default.png?t=N6B9https://www.luogu.com.cn/paste/ih8rpwlt

http://www.lryc.cn/news/95174.html

相关文章:

  • Kubernetes 集群管理和编排
  • DDS协议--[第六章][Discovery]
  • 如何设置iptables,让网络流量转发给内部容器mysql
  • 数字IC实践项目(7)—CNN加速器的设计和实现(付费项目)
  • 基于深度学习的高精度80类动物目标检测系统(PyTorch+Pyside6+YOLOv5模型)
  • 海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储
  • 【NCNN】NCNN中Mat与CV中Mat的使用区别及相互转换方法
  • Android 13 设置自动进入wifi adb模式
  • (笔记)插入排序
  • 结构型模式 - 组合模式
  • EDM营销过时了?不,这才是跨境电商成功的最佳工具
  • 【大数据之Hive】二十五、HQL语法优化之小文件合并
  • spring 连接oracle数据库报错{dataSource-1} init error解决,电脑用户名问题
  • 行业视野::人工智能与机器人
  • 【Python入门系列】第十七篇:Python大数据处理和分析
  • spring.profiles的使用详解
  • Docker使用总结
  • MySQL 数据库的备份与还原案例分享 2023.07.12
  • verilog实现数码管静态显示
  • MySQL-DML-添加数据insert
  • Prometheus、Grafana使用
  • UG\NX二次开发 使用throw重新抛出异常
  • 为什么单片机可以直接烧录程序的原因是什么?
  • 使用 uiautomator2+pytest+allure 进行 Android 的 UI 自动化测试
  • Android APP性能及专项测试
  • 人工智能自然语言处理:N-gram和TF-IDF模型详解
  • linux内核调试工具记录
  • XSS 攻击的检测和修复方法
  • Spring后置处理器BeanFactoryPostProcessor与BeanPostProcessor源码解析
  • NXP i.MX 6ULL工业开发板硬件说明书( ARM Cortex-A7,主频792MHz)