• 【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)

     

  • 相关阅读:
    38.【C++ 虚函数 纯虚函数 虚基类 (最全详解)】
    C++ 通过 #include 了解 Compiler 和 Linker
    【GIS奇妙之旅】遥感图像分类技术
    如何写出新闻营销中的优质新闻稿?企业在做新闻营销需要注意哪些问题呢?
    S7-200SMART PLC Modbus TCP通信(多服务器多从站轮询)
    vue3 solt
    web server apache tomcat11-11-Jasper 2 JSP Engine
    node实战——koa实现文件下载和图片/pdf/视频预览(node后端储备知识)
    软件需求开发
    Cadence Allegro 高亮功能的使用技巧图文教程
  • 原文地址:https://blog.csdn.net/fdxy12138/article/details/134391298