【題目描述】
用戶輸入整數n(1<=n<=26)和整數m(m<=n),而後輸入n個不一樣的字母,請編寫程序輸出在這n個字母中選擇m個字母的全部排列序列和組合序列。
【源代碼程序】python
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/23 0023 下午 2:12 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: Per_And_Com.py #@Software: PyCharm import iterto (四)、排列組合序列 【題目描述】 用戶輸入整數n(1<=n<=26)和整數m(m<=n),而後輸入n個不一樣的字母,請編寫程序輸出在這n個字母中選擇m個字母的全部排列序列和組合序列。 """ 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()
【題目描述】
蒙特·卡羅方法是一種經過幾率來獲得問題近似解的方法,在不少領域都有重要的應用,其中就包括圓周率近似值的計問題。假設有一塊邊長爲2的正方形木板,上面畫一個單位圓,而後隨意往木板上扔飛鏢,落點座標(x,y)必然在木板上(更多的時候是落在單位圓內),若是扔的次數足夠多,那麼落在單位圓內的次數除以總次數再乘以4,這個數字會無限逼近圓周率的值。這就是蒙特·卡羅發明的用於計算圓周率近似值的方法。編寫程序,模擬蒙特·卡羅計算圓周率近似值的方法,輸入擲飛鏢次數,而後輸出圓周率近似值。
【源代碼程序】算法
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/30 0030 下午 2:43 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: Monte_Carlo.py #@Software: PyCharm """ (五)、蒙特·卡羅法計算圓周率 【題目描述】 蒙特·卡羅方法是一種經過幾率來獲得問題近似解的方法,在不少領域都有重要的應用,其中就包括圓周率近似值的計問題。假設有一塊邊長爲2的正方形木板,上面畫一個單位圓,而後隨意往木板上扔飛鏢,落點座標(x,y)必然在木板上(更多的時候是落在單位圓內),若是扔的次數足夠多,那麼落在單位圓內的次數除以總次數再乘以4,這個數字會無限逼近圓周率的值。這就是蒙特·卡羅發明的用於計算圓周率近似值的方法。編寫程序,模擬蒙特·卡羅計算圓周率近似值的方法,輸入擲飛鏢次數,而後輸出圓周率近似值。 """ import random num=int(input()) ok=0 for i in range(1,num+1): x=random.uniform(-1,1)#到-1到1的隨機數 y=random.uniform(-1,1) if(x*x+y*y<=1): ok+=1 print(ok/num*4)
【運行測試】app
【題目描述】
1955年,卡普耶卡(D.R.Kaprekar)對4位數字進行了研究,發現一個規律:對任意各位數字不相同的4位數,使用各位數字能組成的最大數減去能組成的最小數,對獲得的差重複這個操做,最終會獲得6174這個數字,而且這個操做最多不會超過7次。請編寫程序驗證這個猜測。
【源代碼程序】dom
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/30 0030 下午 2:08 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: 6174.py #@Software: PyCharm """ (六)、驗證6174猜測 【題目描述】 1955年,卡普耶卡(D.R.Kaprekar)對4位數字進行了研究,發現一個規律:對任意各位數字不相同的4位數, 使用各位數字能組成的最大數減去能組成的最小數,對獲得的差重複這個操做,最終會獲得6174這個數字, 而且這個操做最多不會超過7次。請編寫程序驗證這個猜測。 """ def Min_Number(a): a=str(a) arr=[] for i in range(0,4): arr.append(a[i]) arr.sort() return int(''.join(arr)) def Max_Number(a): a=str(a) arr = [] for i in range(0, 4): arr.append(a[i]) arr.sort(reverse=True) return int(''.join(arr)) a=input() while (int(a)!=6174): a=Max_Number(a)-Min_Number(a) print(a,end=" ")
【運行測試】函數
【題目描述】
所謂LRU算法,是指在發生缺頁而且沒有空閒主存塊時,把最近最少使用的頁面換出主存塊,騰出地方來調入新頁面。
問題描述:一進程得到n個主存塊的使用權,對於給定的進程訪問頁面次序,問當採用LRU算法時,輸出發生的缺頁次數。
【源代碼程序】測試
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/30 0030 下午 3:37 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: LRU.py #@Software: PyCharm """ 所謂LRU算法,是指在發生缺頁而且沒有空閒主存塊時,把最近最少使用的頁面換出主存塊,騰出地方來調入新頁面。 問題描述:一進程得到n個主存塊的使用權,對於給定的進程訪問頁面次序,問當採用LRU算法時,輸出發生的缺頁次數。 """ def LRU(pages, maxNum,n): temp = [] times = 0 for page in lst: num = len(temp) if num < n: times += 1 temp.append(page) elif num == n: #要訪問的新頁面已在主存塊中 if page in temp: #處理「主存塊」,把最新訪問的頁面交換到列表尾部 pos = temp.index(page) temp = temp[:pos] + temp[pos+1:] + [page] else: #把最先訪問的頁面踢掉,調入新頁面 temp.pop(0) temp.append(page) times += 1 return times n=int(input()) lst=tuple(input().split(" ")) print(LRU(lst, 3,n))
【運行測試】ui
【題目描述】
假設一段樓梯共n(n>1)個臺階,小朋友一步最多能上3個臺階,那麼小朋友上這段樓梯一共有多少種方法。
【源代碼程序】設計
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/24 0024 下午 10:06 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: Climbing_ladder.py #@Software: PyCharm """ (八)、爬樓梯 【題目描述】 假設一段樓梯共n(n>1)個臺階,小朋友一步最多能上3個臺階,那麼小朋友上這段樓梯一共有多少種方法。 """ def climb(num): if num==1: return 1 if num==2: return 2 if num==3: return 4 else: sum=climb(num-1)+climb(num-2)+climb(num-3) return sum print(climb(int(input())))
【運行測試】code
【題目描述】
輸出n(0<n)行楊輝三角形,n由用戶輸入。
【源代碼程序】orm
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/24 0024 下午 9:36 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: YanghuiTriangle.py #@Software: PyCharm """ (九)、楊輝三角形 【題目描述】 輸出n(0<n)行楊輝三角形,n由用戶輸入。 """ def YangHui (num = 10): LL = [[1]] for i in range(1,num): LL.append([(0 if j== 0 else LL[i-1][j-1])+ (0 if j ==len(LL[i-1]) else LL[i-1][j]) for j in range(i+1)]) return LL a=int(input()) for i in YangHui(a): for j in i: print("%5d"%j,end="") print()
【運行測試】
【題目描述】
用戶輸入整數n和m(1<n<m<1000),應用篩法求[n,m]範圍內的全部素數。
【源代碼程序】
#!/usr/bin/env python # _*_coding:utf-8 _*_ # @Time :2019/4/23 0023 下午 10:03 # @Author :喜歡二福的滄月君(necydcy@gmail.com) # @FileName: PremeNumble.py # @Software: PyCharm import numpy """ (十)、篩法求素數 【題目描述】 用戶輸入整數n和m(1<n<m<1000),應用篩法求[n,m]範圍內的全部素數。 """ import math num = [int(n) for n in input('').split()] MAX_INT=num[1] MIN_INT=num[0] marks_bool = [True] * (MAX_INT + 1) for i in range(2,int(math.sqrt(MAX_INT)) + 1): j = i k = j while j * k <= MAX_INT: marks_bool[j * k] = False k += 1 sum_int = 0 l=[] for i in range(2,MAX_INT + 1): if marks_bool[i] is True: if(i>=MIN_INT): l.append(i) print(numpy.array(l).reshape(-1,5))
【運行測試】
【題目描述】
對於給定5X5的整數矩陣,設計算法查找出全部的鞍點的信息(包括鞍點的值和行、列座標,座標從1開始)。
提示:鞍點的特色:列上最小,行上最大。
【源代碼程序】
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/23 0023 下午 3:29 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: Saddle_Point.py #@Software: PyCharm11 3 5 6 9 12 4 7 8 10 10 5 6 9 11 8 6 4 7 8 15 10 11 20 25 # import numpy as np num = [int(n) for n in input('').split()] num = np.array(num,dtype=int) num = num.reshape(5,5) for i in range(0,5): for j in range(0,5): if (num[i][j] == min(num[:,j]) & num[i][j] == max(num[i,:])): print("[%s,%s,%s]"%(i+1,j+1,num[i][j]))
【運行測試】
【題目描述】
編寫程序,輸出一個給定正整數x(x>1)的質因子展開式。
【源代碼程序】
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/23 0023 下午 9:38 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: Proton.py #@Software: PyCharm a=int(input()) b=str(a) num=[] i=1 while i <= a: if a%i == 0: a = a/i num.append(i) print(num) i = 1 i+=1 b+='='+str(num[1]) for j in num[2:]: b+="*"+str(j) print(b)
【運行測試】
【題目描述】
編寫程序,使用牛頓迭代法求方程 在x附近的一個實根。
【源代碼程序】
#!/usr/bin/env python # _*_coding:utf-8 _*_ #@Time :2019/4/23 0023 下午 2:12 #@Author :喜歡二福的滄月君(necydcy@gmail.com) #@FileName: Per_And_Com.py #@Software: PyCharm from math import fabs def solut(a,b,c,d,e): x1=e # 迭代: while True: x=x1 f = ((a * x + b) * x + c) * x + d #原函數 f1 = (3 * a * x + 2 * b) * x + c #求導的函數 x1 = x - f / f1 if (fabs(x1 - x) <= 0.00000001): return x1 num = [float(n) for n in input('').split()] print(("%0.2f")%(solut(num[0],num[1],num[2],num[3],num[4])))
【運行測試】