首页 > 编程语言 >广州C++信奥老师解一本通题 1919:【02NOIP普及组】选数

广州C++信奥老师解一本通题 1919:【02NOIP普及组】选数

时间:2024-09-27 19:00:43浏览次数:1  
标签:12 信奥 19 long 1919 int 02NOIP 整数 path

 【题目描述】

已知nn个整数x1,x2,……xn 以及一个整数K(K<n)。从n个整数中任选K个整数相加,可分别 得到一系列的和。例如当n=4, k=3 4个整数分别为3,7,12,19 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)

第二行为n个数

x1x2……xn(1≤xi≤5000000),各数之间用一个空格隔开)

【输出】

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

【输入样例】

4 3 
3 7 12 19

【输出样例】

1

此题跟1317:【例5.2】组合的输出 解法类似

 

#include <bits/stdc++.h>
using namespace std;
long long path[21],a[21];  //path存放组合的元素的数字 
int n,k,ans=0;  
bool isPrime(long long n)
{
	if(n<=1)
		return false;
	for(int i = 2; i <= sqrt(n);i++)
        if(n % i == 0)
            return false;
    return true;
}
void dfs(int start,int cnt)
{
	if(cnt>k)
	{
		long long sum=0; 
		for(int i=1;i<=k;i++)
			sum+=path[i];
		if( isPrime(sum) )
			ans++;
		return;
	}
	for(int i=start;i<=n;i++) //递归尝试数组元素下标 1,2,3,4等 
	{
		path[cnt]=a[i];
		dfs(i+1,cnt+1);
	}
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	memset(path,0,sizeof(path));
	dfs(1,1);
	cout<<ans;
	return 0;
}

 

标签:12,信奥,19,long,1919,int,02NOIP,整数,path
From: https://www.cnblogs.com/nanshaquxinaosai/p/18436394

相关文章

  • CF1919E
    给定长度为\(n\)的数列\(p\),求有多少个长度为\(n\)的数列\(a\)满足:\(\foralli\in[1,n],|a_i|=1\);其前缀和数组排序后恰为数列\(p\)。\(\sumn\leq5000\)。这个题真的抽象,还是先不管了。Conclusion用折线图观察操作。自定义统一操作生成最终答案。题外话:感......
  • 广州C++信奥老师解1913:【00NOIP普及组】单词接龙
    ​ 【题目描述】 【输出】 样例连成的“龙”为atoucheatactactouchoose#include<bits/stdc++.h>usingnamespacestd;intv[21],ans=0,n;stringa[21];intgetPos(strings1,strings2)//beast和astonish例ast则返回位置2,但实际把后面onish接上去{for......
  • 广州C++信奥老师解一本通题 1260:1282:最大子矩阵
    ​ 【题目描述】已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1×1)子矩阵。比如,如下4×4的矩阵0 -2-7 09 2-6 2-4 1-4 1-1 8 0-2 的最大子矩阵是92-41-18 这个子矩阵的大小是15......
  • 广州C++信奥赛老师解一本通题 1389:亲戚
    ​ 【题目描述】若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的某个人所在家族的人数。规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。【输入】第一行:三个整数n,(n......
  • 南沙C++信奥老师解一本通题 1264:【例9.8】合唱队形
    ​ 【题目描述】N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设KK位同学从左到右依次编号为1,2,…,K1,2,…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<T2<…<Ti,Ti>Ti+1>…>TK(1≤i≤K)你的任务是,......
  • 南沙C++信奥老师解一本通题 1281:最长上升子序列
    ​ 【题目描述】一个数的序列bibi,当b1<b2<...<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aiK),这里1≤i1<i2<...<iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列......
  • 打卡信奥刷题(784)用Scratch图形化工具信P6488[普及组/提高组] [COCI2010-2011#6] OKUPL
    [COCI2010-2011#6]OKUPLJANJE题目描述一场巨大的派对结束以后,有五家报纸刊登了参加这场派对的人数,然而这些报纸上的数字可能是错误的。现在你知道整个会场的面积是LL......
  • 南沙C++信奥老师解一本通题 1260:【例9.4】拦截导弹(Noip1999)
    ​【题目描述】某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦......
  • 打卡信奥刷题(780)用Scratch图形化工具信P6414[普及组/提高组] [COCI2014-2015#1] PROSJ
    [COCI2014-2015#1]PROSJEK题目描述有一个数列aaa,现在按照下列公式求出一个数列bb......
  • 南沙C++信奥老师解一本通题:1372:小明的账单
    ​ 【题目描述】小明在一次聚会中,不慎遗失了自己的钱包,在接下来的日子,面对小明的将是一系列的补卡手续和堆积的账单…在小明的百般恳求下,老板最终同意延缓账单的支付时间。可老板又提出,必须从目前还没有支付的所有账单中选出面额最大和最小的两张,并把他们付清。还没有支付的......