日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

蓝桥杯真题(python)+B组真题+解题链接

發布時間:2023/12/10 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯真题(python)+B组真题+解题链接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

藍橋杯原題級別。以十二屆藍橋杯python試題備戰明天十三屆藍橋杯。

實踐證明:

????????python基礎知識很重要。

????????藍橋杯真題大于藍橋杯算法。(短時間內)?

二維列表按第二個元素逆序排序:list.sort(key = lambda x:x[1],reverse = True)

補充:

2022年十三屆藍橋杯python組B組原題:2022第十三屆藍橋杯省賽B組Python

2022年十三屆藍橋杯python組B組解題:2022第十三屆藍橋杯PythonB組-pudn.com


目錄

十二屆python組A組

A、卡片

B、直線

C、貨物擺放

D、路徑

十三屆python組B組?

A題

F題

代碼注釋:?

純代碼:?


十二屆python組A組

2021年第十二屆藍橋杯軟件類省賽python組

A、卡片

#2021張,用字典對應數字和卡片數#創建卡片字典,每個卡片2021張。 di = {} n = 2021 for i in range(10):di[str(i)] = n # print(di)#開始對每一個數取出卡片,直到沒有卡片拼數字 flag = True i = 0 while flag:i += 1for j in str(i):di[j] -= 1if di[j] < 0:flag = Falsebreakprint(i-1)#3181

B、直線

#兩點確定一條直線, #斜率k和截距b不同,那么就是不同的直線 #特殊的,斜率不存在,即x1 = x2#建立所有坐標點 xoy = [[x,y] for x in range(20) for y in range(21)] #print(xoy) #建立已經包含的直線 line = set() for i in range(len(xoy)):#確定第一個點x1,y1 = xoy[i][0],xoy[i][1]for j in range(i+1,len(xoy)):#確定第二個點x2,y2 = xoy[j][0],xoy[j][1]if x1 == x2:#特殊處理continuek = (y2-y1)/(x2-x1)b = (x2*y1-x1*y2)/(x2-x1)#if (k,b) not in line:#如果是集合,必然不會重復,可以少一個if判斷line.add((k,b))#不同的(k,b)放入直線的集合print(len(line)+20)#40257

C、貨物擺放

#對n求解質因數,組合因數乘積為n n=2021041820210418 ans = 0 docker = set() for i in range(1,int(n**0.5)+1):#n的開方,減少循環if n%i == 0:#判斷并把因數放入集合docker.add(i)docker.add(n//i)for a in docker:for b in docker:for c in docker:if a*b*c == n:#判斷乘積為nans += 1print(ans)#2340

D、路徑

最大公因數:兩數的最大因數。

最小公倍數:兩數之積與最大公因數的商。

DP:大概就是尋找n與n-i的關系。對于此題:dp[j] = min(dp[j],dp[i]+lcm(i,j))

模板:

#模板1,math.gcd(a,b)求解最大公因數 import mathdef lcm(a,b):return a*b//math.gcd(a,b) #模板2,最小公倍數模板(least common multiple) def lcm(a,b):s=a*bwhile b:a,b=b,a%breturn s//a #兩點之間最短路徑 #最小公倍數 import mathdef lcm(a,b):return a*b//math.gcd(a,b)dp = [float('inf')]*(2021+1)#無窮大dp[1] = 0for i in range(1,2021+1):for j in range(i+1,i+21+1):if j > 2021:breakdp[j] = min(dp[j],dp[i]+lcm(i,j))#取最小print(dp[2021]

十三屆python組B組?

記錄一下比賽僅僅會的一道題吧——十三屆藍橋杯python組B組

A題

大概就是字母排序A-Z排序,沒學過都能看出他是字母排序。所以不能說算會

s = 'WHERETHEREISAWILLTHEREISAWAY' li = list(s) li.sort() a = ''.join(li) print(a)#AAAEEEEEEHHHIIILLRRRSSTTWWWY

F題

去掉字符邊緣。比如說eddf,dd是連續的,那么和dd相連的ed和df就是邊緣,去掉就好。

很簡單吧,沒錯四個小時就寫了這一個題。運用了我幾乎全部的python基礎知識,并且和前兩天學的算法無一毛錢關系。

代碼注釋:?

純代碼:?

代碼注釋:?

#接受輸入 li = list(input())##便于后邊調用64次 def fun(li):index_set = set()#用集合保存下標,不會重復for i in range(1,len(li)-1):#從第二個開始到倒數第二個(因為下邊有i-1和i+1,不然會超范圍)if li[i] == li[i+1] and li[i] != li[i-1]:#第一種情況:addindex_set.add(i)index_set.add(i-1)if li[i] == li[i-1] and li[i] != li[i+1]:#第二種情況:ddcindex_set.add(i)index_set.add(i+1)index_list = list(index_set)#集合變列表,無序變有序index_list.sort(reverse=True)#列表倒序for j in index_list:#按倒序下標刪除對應列表元素,不會出現混亂li.pop(j)#題目要求對輸入進行64次去邊緣 for i in range(64):fun(li)#按要求輸出 if len(li) == 0:print('EMPTY') else:s = ''.join(li)print(s)

純代碼:?

li = list(input())def fun(li):index_set = set()for i in range(1,len(li)-1):if li[i] == li[i+1] and li[i] != li[i-1]:index_set.add(i)index_set.add(i-1)if li[i] == li[i-1] and li[i] != li[i+1]:index_set.add(i)index_set.add(i+1)index_list = list(index_set)index_list.sort(reverse=True)for j in index_list:li.pop(j)for i in range(64):fun(li)if len(li) == 0:print('EMPTY') else:s = ''.join(li)print(s)

?B題把我搞吐了,意思是找出一個10的17次方以內的最小數。這個最小數對2到49這些數求余的值在表格中告訴了。弄了2個小時直到結束,暈了。

我的思路:

表格中取余后求多的數是11,比如:n%a==11,n%b==11,n%c==11。

那么這個數應該是n(n = a*b*c*i + 11,i取0,1,2,3...)

肯定是這些數中的一個吧,他要取最小,那我就從0開始遞增取,

直到符合所有取余條件,我就輸出值,并結束循環。

應該是能輸出的吧。。。

可是i取值從0到10**9都沒有值,n的范圍早已到10**19

flag = True while flag:for i in range(10):n = 12*14*22*23*33*43*44*i + 11#print(n)#n肯定是求余后為11吧if n%49==48 and n%49==41 and n%47==21 and n%46==5:if n%2==1 and n%3==2 and n%4==1:#這樣判斷余數為對應值,符合的話應該能輸出吧#...print(n)flag = Falsebreak

現在的感覺是我跳過了范圍 ,難道應該這樣寫?

flag = True while flag:for i in range(10**9,10**17):if i%49==46:if i%48==41:if i%47==5:if i%46==15:print(i,'test01')if i%45==29:if i%44==33:print(i,'test02')if i%43==11:if i%42==11:print(i)flag=Falsebreak

試了一下,筆記本嗡嗡嗡~~~,是CPU在燃燒,又學會了一種干廢電腦的方法。哈哈

G題看了一眼不會。記不清了。

似乎這B組比A組難吧。。。可以上網,但根本沒時間去搜,不會就是不會。


堅毅——GRIT

總結

以上是生活随笔為你收集整理的蓝桥杯真题(python)+B组真题+解题链接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。