本文主要是介绍python蓝桥杯选数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、题意
- 二、代码
- 1.代码的实现
- 2.读入数据
- 总结
前言
本题涉及到很多python中的知识点,比如combinations(列表的组合)应用,以及素数的判断
一、题意
已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:
3+7+12=22
3+7+19=29
7+12+19=38
3+12+19=34.
现在,要求你计算出和为素数共有多少种.
二、代码
1.代码的实现
from itertools import *#引用组合函数combinations
from math import *#引用sum函数求和
def func(n):#用来判断n是否为素数i=2flag=1#是素数if n == 1:flag=0else :for i in range(2,n):if n%i==0:flag=0return flagn,k=map(int,input().split())#第一行输入数字个数以及多少个数字相加
a=list(map(int,input().split()))#第二行输入每个数字都是多少
cnt=0
for i in combinations(a,k):if func(sum(i))==1:cnt=1+cnt
print(cnt)
2.读入数据
4 3
3 7 12 19
1#在以上的组合中只有一个素数
总结
在此处总结一下排列组合函数:
排列函数itertools.permutations(a,2)#将列表a两两进行排列,注意1 2和2 1是两个不同的排列
itertools.combinations(a,2)#将列表a进行两两组合,注意,1 2和2 1是同一个组合!!!
这篇关于python蓝桥杯选数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!