天天看點

藍橋杯模拟賽(python語言)

第一題:機關變換

問題:在計算機存儲中,15.125GB是多少MB

GB = float(input('輸入存儲大小: '))
 MB= GB*1024
print('%0.1f轉換後的存儲大小為%0.1f ' %(GB,MB))
           

第二題:約數個數

問題:1200000有多少個約數(隻計算正約數)。

N=1200000
if __name__ == '__main__':
    print(len([i for i in range(1,N+1) if N % i == 0]))

           

N=1200000
for i in range(N,N+1):
    if N % i ==0:
        print(i)
    else:
        False
           

count = 0
for i in range(1,1200001):
    if 1200000%i == 0:
        count +=1
print(count)
           

第三題:葉結點數

問題:一棵包含有2019個結點的二叉樹,最多包含多少個葉結點?

第四題:數字9

問題:在1至2019中,有多少個數的數位中包含數字9?

注意,有的數中的數位中包含多個9,這個數隻算一次。例如,1999這個數包含數字9,在計算時隻是算一個數。

N = 2019
if __name__ == '__main__':
    ans = len([s for s in [str(i) for i in range(9, N + 1)] if '9' in s])
    print(ans)
           

count = 0
for i in range(1,2020):
    s = str(i)
    if '9' in s:
        count += 1
print(count)
           

第五題:數位遞增的數

問題:一個正整數如果任何一個數位不大于右邊相鄰的數位,則稱為一個數位遞增的數,例如1135是一個數位遞增的數,而1024不是一個數位遞增的數。

給定正整數 n,請問在整數 1 至 n 中有多少個數位遞增的數?

if __name__ == '__main__':
    ans = 0
    n = int(input())
    for s in [str(i) for i in range(1, n + 1)]:
        flag = True
        for j in range(1, len(s)):
            if s[j - 1] > s[j]:
                flag = False
                break
        if flag:
            ans += 1
    print(ans)
           

def check(n):
    ls = n.copy()  #注意要用copy()函數來進行拷貝
    ls.sort()
    return ls == n       
n = input()
count = 0
for i in range(1,eval(n)+1):
    if check(list(str(i))):
        count += 1
print(count)
           

第六題:遞增三元組

問題:在數列 a[1], a[2], …, a[n] 中,如果對于下标 i, j, k 滿足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],則稱 a[i], a[j], a[k] 為一組遞增三元組,a[j]為遞增三元組的中心。

給定一個數列,請問數列中有多少個元素可能是遞增三元組的中心。

if __name__ == '__main__':
    ans = 0
    n = int(input().strip())
    data = [int(x) for x in input().strip().split(' ')]  # 轉整數清單

    len1 = len(data)
    for j in range(1, len1 - 1):
        hasSmall = False
        hasBig = False
        for i in range(j):
            if data[i] < data[j]:
                hasSmall = True
                break
        for k in range(j + 1, len1):
            if data[j] < data[k]:
                hasBig = True
                break
        if hasSmall and hasBig:
            ans += 1
    print(ans)
           

n = eval(input())
ls = input().split()
ls = [eval(i) for i in ls]
out = []
count = 0
for i in range(n-2):
    for j in range(i+1,n-1):
        for k in range(j+1,n):
            if ls[i]<ls[j] and ls[j]<ls[k]:
                count += 1
                out.append(j)
                break
print(len(set(out)))