码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【python】选数


    题目:

    """

    题目描述:

    给定一个由 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)。

    输出格式:

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

    """

    代码:

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

     

  • 相关阅读:
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    视频编解码领域入门指南:小白必读!
    1093:计算多项式的值(信奥一本通 )
    windows11家庭版安装hyperv-v
    以太网基础——DoIP报文类型
    mac苹果电脑删除顽固残留软件图标
    “搞事情”?OpenAl将于11月召开其首届开发者大会
    计算机毕业设计SSM电商后台系统【附源码数据库】
    数学建模笔记(十五):多元统计分析及R语言建模(含数据代码注释,均可供运行,高版本无法导入包则使用自编代码计算)
    TypeError: can‘t pickle _thread.lock objects
  • 原文地址:https://blog.csdn.net/fdxy12138/article/details/134391298
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号