发现大多数的题解都不是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)))