洛谷——P1036 选数
2024-08-29 08:27:57
题目描述
已知 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)
输出格式:
屏幕输出,格式为:
一个整数(满足条件的种数)。
输入输出样例
输入样例#1:
4 3 3 7 12 19
输出样例#1:
1 搜索! 思路:搞了半天没搞出样例,后来发现原来是判素数的地方出错了,ORZ。在搜索的时候我们选择倒着搜索,先搜索第k个数,再搜第k-1个(你也可以正着搜,这么开心怎么来。。。)再看看搜索的数是否为素数,就好了我们在搜完k位时,一定不要忘了判素数!!!(反正,我判素数的代码错了。。。。)代码:
#include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define N 110 using namespace std; int n,k,a[N],ans; int read() { ,f=; char ch=getchar(); ; ch=getchar();} +ch-'; ch=getchar();} return x*f; } int pd(int x) { ||x==) ; ) ; ;i*i<=x;i++) ; ; } void dfs(int k,int x,int sum) { if(!k) { ans+=pd(sum); return ; } for(x;x<=n;x++) dfs(k-,x+,sum+a[x]); } int main() { n=read();k=read(); ;i<=n;i++) a[i]=read(); dfs(k,,); printf("%d",ans); ; }
最新文章
- Maven随记
- linux安装php &; nginx
- 手把手教你在Windows下搭建React Native Android开发环境
- 技术英文单词贴--D
- jdbc至sql server的两种常见方法
- C# 检测操作系统是否空闲,实现系统空闲后做一些操作
- ORA-01017 invalid username/password;logon denied"; (密码丢失解决方案)
- php laravel 安装
- 【转】jsp页面中jstl标签详解
- SQL Server 2008 无法保存表的更改
- 2016031901 - U盘安装ubuntu系统
- C++和java的区别
- SQL SERVER语句汇总
- 2017-1-9css
- Lesson 1: What is design? Why is it important?
- 关于C#继承运用的总结
- vscode中vue代码颜色插件
- 读取Excel,单元格内容大于255个字符自动被截取的问题
- 腾讯开源项目phxpaxos的编译步骤
- Android获取本机号码及运营商
热门文章
- System.Lazy<;T>;延迟加载
- 自制无线共享工具C++源代码及创建过程
- iTOP-4418/6818开发板支持双屏异显,双屏同显
- leetcode_1015. Numbers With Repeated Digits
- jQuery 点击查看 收起
- 【原】简单shell练习(二)
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- idea cannot download sources解决办法
- PHP典型功能与Laravel5框架开发学习笔记
- PHP:图片上传