【python】选数

news/2025/2/22 6:43:37/

题目:

"""

题目描述:

给定一个由 n 个整数组成的序列x_1, x_2,..., x_n),以及一个整数 k ( k < n )。从这 n 个整数中选择 k 个整数相加,可以得到多种不同的和。例如,当 n = 4,k = 3,且这四个整数分别为 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 个整数 x_1, x_2,..., x_n ) (1<=x_i<=5000000)。

输出格式:

- 对于每组输入数据,输出一个整数,表示满足条件的组合数量。

"""

代码:

# 判断一个数是否为素数
def is_prime(num):if num <= 1:  # 如果数小于等于1,不是素数return False# 只需要检查到数的平方根,因为如果num有因数,它必定至少有一个不大于其平方根for i in range(2, int(num**0.5) + 1):if num % i == 0:  # 如果num能被任何小于它的平方根的数整除,不是素数return Falsereturn True  # 如果没有找到因数,那么num是素数# 生成数组arr中所有可能的k元素组合
def generate_combinations(arr, n, k):result = []  # 用于存储所有组合的列表# 辅助递归函数,用于生成组合def generate_combinations_util(current, start):# 如果当前组合的长度等于k,则将其添加到结果列表中if len(current) == k:# 创建 current 列表的一个副本 append的是一个列表result.append(current.copy())return# 递归地从数组中选择不同的元素,以构建组合for i in range(start, n):current.append(arr[i])  # 将元素加入当前组合# util实用程序generate_combinations_util(current, i + 1)  # 递归调用current.pop()  # 移除刚才加入的元素,以便于下一次循环添加新的元素generate_combinations_util([], 0)  # 调用辅助函数return result  # 返回所有组合# 读取输入
n, k = map(int, input().split())  # 读取n和k
a = list(map(int, input().split()))  # 读取数组a
count = 0  # 用于计数满足条件的组合数量# 获取所有可能的组合
combinations = generate_combinations(a, n, k)# 遍历每一个组合
for combo in combinations:# 如果组合的和是素数if is_prime(sum(combo)):count += 1  # 计数增加# 输出满足条件的组合总数
print(count)

 


http://www.ppmy.cn/news/1218642.html

相关文章

大模型在数据分析场景下的能力评测|进阶篇

做数据分析&#xff0c;什么大模型比较合适&#xff1f; 如何调优大模型&#xff0c;来更好地做数据计算和洞察分析&#xff1f; 如何降低整体成本&#xff0c;同时保障分析体验&#xff1f;10月25日&#xff0c;我们发布了数据分析场景下的大模型能力评测框架&#xff08;点击…

javascript二维数组(22)JavaScript 中的数据类型有哪些?如何进行类型转换?

在 JavaScript 中&#xff0c;数据类型主要分为两种&#xff1a;基本类型和对象类型。 基本类型是指原始数据类型&#xff0c;包括&#xff1a; Number&#xff1a;数值型。可以是整数或浮点数。String&#xff1a;字符串型。用于表示文本数据。Boolean&#xff1a;布尔型。包…

Visual Studio Code安装和设置中文

文章目录 Visual Studio Code安装Visual Studio Code设置中文 步骤如下: Visual Studio Code安装 1.下载安装包 VS Code的官网 下载链接中的“az764295.vo.msecnd.net” 替换为国内镜像地址“vscode.cdn.azure.cn”&#xff0c;下载速度直接飙升至几十 Mb/s。(在官网下载速度…

【双指针】:Leetcode283.移动零

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本专栏是关于各种算法的解析&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结构专栏&…

kettle转换和作业介绍

转换和作业定义 转换&#xff08;Transformation&#xff09; 和 作业&#xff08;Job&#xff09;是Spoon设计器的核心两个内容&#xff0c;这两块内容构建了整个Kettle工作流程的基础。 1. 转换&#xff08;Transformation&#xff09;&#xff1a;主要是针对数据的各种处理…

【uniapp】确认弹出框,选择确定和取消

代码如下&#xff1a; <view style"display: flex; justify-content: space-around;"><button class"button" click"submit">t提交</button> </view>submit(){let thatthisuni.showModal({title: 提示&#xff1a;,con…

Nodejs操作缓存数据库-Redis

Hi I’m Shendi Nodejs专栏 Nodejs操作缓存数据库-Redis 在服务端开发中&#xff0c;缓存数据库也是不可或缺的&#xff0c;可以提高程序并发以及方便后续扩展&#xff0c;而目前最常用的莫过于Redis了 安装依赖 和之前的mysql一样&#xff0c;redis的依赖最常用的就是redis …

bugku题解记录

Flask_FileUpload 看题目的意思&#xff0c;大概是文件上传攻击。 题目页面也只有上传文件查询 那么查看源代码 发现只能上传png或jpg&#xff0c;注释里说如果你上传之后&#xff0c;将会用python执行查询 所以编辑文本文档&#xff0c;写代码 import os#提供了与操作系统交…