1. 程式人生 > 其它 >藍橋杯歷屆真題(python B組 )

藍橋杯歷屆真題(python B組 )

第十一屆藍橋杯大賽第二次模擬(軟體類)真題

Python組

【問題描述】在計算機儲存中,12.5MB是多少位元組?
【答案提交】這是一 道結果填空的題,你只需要算出結果後提交即可。本題的結果為一個整數,在提交答案時只 填寫這個整數,填寫多餘的內容將無法得分。

'''
這裡注意是byte不是bit,byte是位元組,bit是位元。
儲存單位換算關係如下
 1 Byte = 8 bit	
 1 KB= 1024 B	
 1 MB = 1024 KB	
 1 GB = 1024 MB	
 1 TB = 1024 GB
 '''

12.5 MB * 1024 * 1024 = 13107200 Byte

 

【問題描述】一個包含有2019個結點的有向圖,最多包含多少條邊?(不允許有重 邊)

【答案提交】這是一道結果填空的題,你只需要算出結果後提交即可。本題的 結果為一個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。

'''
n個結點的有向邊為: n * (n-1)
'''

2019 * (2019 - 1) = 4074342

【問題描述】將LANQJAO中的字母重新排列,可以得到不同的單詞,如LANQIAO、 AAILNOQ等,注意這7個字母都要被用上,單詞不一定有具體的英文意義。請問,總共 能排列如多少個不同的單詞。

【答案提交】這是一道結果填空的題,你只需要算出 結果後提交即可。本題的結果為一個整數,在提交答案時只填寫這個整數,填寫多餘的內容 將無法得分。

import itertools
a = list('LANQIAO')
print(len(set(itertools.permutations(a))))

'''
2520
'''

【問題描述】由1對括號,可以組成一種合法括號序列:()。由2對括號,可以 組成兩種合法括號序列:()()、(())。由4對括號組成的合法括號序列一共有多少種?

【答案提交】這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果為一 個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。

import itertools
def jc(aa): # 檢測括號是否合法函式
  a = 0
  for x in aa:
    a+= 1 if x == '(' else -1
    if a < 0: # 當a小於0時說明出現了‘)’在前面的情況
      return 0
  return 1
a = ['(',')','(',')','(',')','(',')']
b = itertools.permutations(a) # 標出所有括號組合
c = []
d = 0
for x in b:
  if jc(x) == 1:  # 檢測是否合法
    if x not in c:  # 檢測是否已經存在合法的格式
      c.append(x)
      d += 1  
print(d)

'''
14
'''

【問題描述】給定三個整數a,b,c,如果一個整數既不是a的整數倍也不是b的 整數倍還不是c的整數倍,則這個數稱為反倍數。請問在1至n中有多少個反倍數。
【輸入格式】輸入的第一行包含一個整數n。第二行包含三個整數a,b,c,相 鄰兩個數之間用一個空格分隔。

【輸出格式】輸出一行包含一個整數,表示答案。
【樣例輸入】

30
2 3 6
【樣例輸出】
10
【樣例說明】以下這些 數滿足要求:1,5,7,11,13,17,19,23,25,29。
【評測用例規模與約定】對於40%的 評測用例,1&t;=n&t;10000。對於80%的評測用例,1&t;=n&t;=100000。

n = int(input())
a,b,c = map(int,input().split())
d = 0
for x in range(1,n):
  if x%a != 0 and x%b != 0 and x%c != 0:
    d += 1
print(d)



【問題描述】給定一個單詞,請使用凱撒密碼將這個單詞加密。凱撒密碼是一 種替換加密的技術,單詞中的所有字母都在字母表上向後偏移3位後被替換成密文。即ā 變為d,b變為e,,w變為z,x變為a,y變為b,z變為c。例如,lanqiao會變成 odqtldr。

【輸入格式】輸入一行,包含一個單詞,單詞中只包含小寫英文字母。

【輸出格式】輸出一行,表示加密後的密文。
【樣例輸入】langiao
【樣例輸出】odqtldr
【評測用例規模與約定】br>對於所有評測用例,單詞中的字母個數 不超過100。

a = [x for x in input()]
for x in a:
  if 97< ord(x)+3 < 122:
    print(chr(ord(x)+3),end='')
  else:
    b = ((ord(x)+3) % 122) + 96 # 這裡的96是為了讓他從新開始計數
    print(chr(b), end='')

到這裡我就不做了,因為我藍橋杯比完了,這個閹割版就發出來吧,嘿嘿,別罵我。