博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1036 选数
阅读量:4960 次
发布时间:2019-06-12

本文共 1211 字,大约阅读时间需要 4 分钟。

题目描述

已知 nnn 个整数 x1,x2,…,xnx_1,x_2,…,x_nx1,x2,,xn,以及111个整数kkk(k<nk<nk<n)。从nnn个整数中任选kkk个整数相加,可分别得到一系列的和。例如当n=4,k=3n=4,k=3n=4,k=3,444个整数分别为3,7,12,193,7,12,193,7,12,19时,可得全部的组合与它们的和为:

3+7+12=223+7+12=223+7+12=22

3+7+19=293+7+19=293+7+19=29

7+12+19=387+12+19=387+12+19=38

3+12+19=343+12+19=343+12+19=34。

现在,要求你计算出和为素数共有多少种。

例如上例,只有一种的和为素数:3+7+19=293+7+19=293+7+19=29。

输入输出格式

输入格式:

 

键盘输入,格式为:

n,kn,kn,k(1≤n≤20,k<n1 \le n \le 20,k<n1n20,k<n)

x1,x2,…,xn(1≤xi≤5000000)x_1,x_2,…,x_n (1 \le x_i \le 5000000)x1,x2,,xn(1xi5000000)

 

输出格式:

 

屏幕输出,格式为: 111个整数(满足条件的种数)。

 

#include
int n, k, result = 0;long long num[51];long long sum = 0;bool check(long long a) { for (int i = 3; i < a; i++) if (a % i == 0) { return false; } return true;}void getsum(int x, int y) { int i; if (x > k) { if (check(sum)) result++; return; } for (i = y + 1; i <= n; i++) { sum += num[i]; getsum(x + 1, i); sum -= num[i]; }}int main() { using namespace std; cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> num[i]; } getsum(1, 0); cout << result; return 0;}

 

转载于:https://www.cnblogs.com/hsjj/p/P1036.html

你可能感兴趣的文章
arraylist
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
2124: 等差子序列 - BZOJ
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
HashMap详解
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>