python竞赛试题及答案_2020年3月22日蓝桥杯学校模拟比赛(python),20200322,校内,题解,上,Python...

发现大多数的题解都不是Python解决的,就写这篇文章来用Python解决模拟赛题。当然因为是看着题目写的,并不能保证能通过全部样例,也希望有什么错误,大佬们能够指出来。这篇文章只有1-7题,后续有空就写后三题(当然也有可能写不出来)

1.单位换算

问题描述

在计算机存储中,15.125GB是多少MB?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。(15488)

15.125GB = 15.125 * 1024MB = 15488MB

2.正约数

问题描述

1200000有多少个约数(只计算正约数)。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

代码实现

count = 0

for i in range(1,1200001):

if 1200000%i == 0:

count +=1

print(count)

#答案为96

3.数字9

问题描述

在1至2019中,有多少个数的数位中包含数字9?

注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

代码实现

count = 0

for i in range(1,2020):

s = str(i)

if '9' in s:

count += 1

print(count)

#答案为544

4.最多叶结点

问题描述

一棵包含有2019个结点的二叉树,最多包含多少个叶结点?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

这里有两个公式:

总结点=叶子节点数+度为1的节点数+度为2的节点数

叶子节点数=度为2的节点数+1

联立上面的方程式:

答案为:1010

5.单词分段

问题描述

小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。

给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。

元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。

输入格式

输入一行,包含一个单词,单词中只包含小写英文字母。

输出格式

输出答案,或者为yes,或者为no。

样例输入

lanqiao

样例输出

yes

样例输入

world

样例输出

no

评测用例规模与约定

对于所有评测用例,单词中的字母个数不超过100。

代码实现

def check(index):#这个函数是用来检验有多少次间断的数字

old = 0

count = 0

for i in index:

new = i

if new != old +1:#如果间断,计数加一

count += 1

old = new

return count

word = list(input())

index = []

for i in range(len(word)):#生成字母aeiou的索引序列

if word[i] in ['a', 'e', 'i', 'o', 'u']:

index.append(i)

count = check(index)

if count == 1 and index[-1] == len(word)-1:#如果间断一次并且最后一个字母为aeiou则为正确

print('yes')

else:

print('no')

6 .数位递增

问题描述

一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。

给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?

输入格式

输入的第一行包含一个整数 n。

输出格式

输出一行包含一个整数,表示答案。

样例输入

30

样例输出

26

评测用例规模与约定

对于 40% 的评测用例,1 <= n <= 1000。

对于 80% 的评测用例,1 <= n <= 100000。

对于所有评测用例,1 <= n <= 1000000。

代码实现

因为是递增的,而且是比较一个数字,所以我就直接把数字变成单个的字符串列表,然后排序看和原来的列表是否一样,一样的话就说明这个数字是递增的。

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)

7.递增三元组

问题描述

在数列 a[1], a[2], …, a[n] 中,如果对于下标 i, j, k 满足 0

给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。

输入格式

输入的第一行包含一个整数 n。

第二行包含 n 个整数 a[1], a[2], …, a[n],相邻的整数间用空格分隔,表示给定的数列。

输出格式

输出一行包含一个整数,表示答案。

样例输入

5

1 2 5 3 5

样例输出

2

样例说明

a[2] 和 a[4] 可能是三元组的中心。

评测用例规模与约定

对于 50% 的评测用例,2 <= n <= 100,0 <= 数列中的数 <= 1000。

对于所有评测用例,2 <= n <= 1000,0 <= 数列中的数 <= 10000。

代码实现

暴力解决

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]

count += 1

out.append(j)

break

print(len(set(out)))

你可能感兴趣的:(python竞赛试题及答案)