【Python0002】排列组合序列 (10分)
【题目描述】
用户输入整数n(1<=n<=26)和整数m(m<=n),然后输入n个不同的字母,请编写程序输出在这n个字母中选择m个字母的所有排列序列和组合序列。
import itertools e=input() num=int(input()) arr = input().split(" ") print(arr) a = list(itertools.combinations(arr,num)) b = list(itertools.permutations(arr,num)) print("Permutation:" ) for i in b: for j in i: print(j,end=" ") print() print("Combination:" ) for i in a: for j in i: print(j,end=" ") print()
【Python0003】蒙特·卡罗法计算圆周率 (10分)
【题目描述】
蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计问题。假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x,y)必然在木板上(更多的时候是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法,如下图所示。编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。
from random import random times = int(input('请输入投掷飞镖次数')) hist = 0 for i in range(times): # range 生成一个连续数字序列 x = random() # 生成随机数 y = random() if x * x + y * y < 1: hist += 1 print(4.0 * hist / times)
【Python0004】验证6174猜想 (10分)
【题目描述】
1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。请编写程序验证这个猜想。
a = input() a = int(a) i = 0 l = [] cha = 0 b = a%1000 #求出百十个位 max4 = (a - b)/1000 #求出千位 d = b%100 #求出十个位 max3 = (b - d)/100 #求出百位 max1 = d%10 #求出个位 max2 = (d - max1)/10 #求出十位 l.append(max4) l.append(max3) l.append(max2) l.append(max1) l.sort() max1 = int(l[0]) #最小值 max2 = int(l[1]) max3 = int(l[2]) max4 = int(l[3]) #最大值 while cha != 6174 : i = i + 1 summax = max4 * 1000 + max3 * 100 + max2 * 10 + max1 summin = max1 * 1000 + max2 * 100 + max3 * 10 + max4 cha = summax - summin baishige = cha%1000 #求出百十个位 max4 = (cha - baishige)/1000 #求出千位 shige = baishige%100 #求出十个位 max3 = (baishige - shige)/100 #求出百位 max1 = shige%10 #求出个位 max2 = (shige - max1)/10 #求出十位 l = [] l.append(max4) l.append(max3) l.append(max2) l.append(max1) l.sort() max1 = int(l[0]) #最小值 max2 = int(l[1]) max3 = int(l[2]) max4 = int(l[3]) #最大值 print(cha)
自我抑郁又自我救赎