蓝桥杯模拟赛(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)))



  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值