No.1.15.125GB
【问题描述】
在计算机存储中,15.125GB是多少MB?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
15.125GB = 1024 *15.125 MB
No.3.叶结点数
【问题描述】
一棵包含有2019个结点的二叉树,最多包含多少个叶结点?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
二叉树的性质:
1.对任何一棵二叉树:度为0的结点数 = 度为2的节点数 + 1;
若此时无度为1的节点,即为满二叉树时,叶节点最多为2014,2015个度为2的节点
No.4.数字9
【问题描述】 在1至2019中,有多少个数的数位中包含数字9? 注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数。 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分
count=0
for i in range(2019):
str1 =str(i)
for j in str1:
if(j=='9'):
print(str1)
count+=1
continue
print(count)
No.6.递增三元组
在数列 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]为递增三元组的中心。
给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。
【输入格式】
输入的第一行包含一个整数 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<最大值条件的可以作为中间元素
No.7正整数序列
【问题描述】
小明想知道,满足以下条件的正整数序列的数量:
1. 第一项为 n;
2. 第二项不超过 n;
3. 从第三项开始,每一项小于前两项的差的绝对值。
请计算,对于给定的 n,有多少种满足条件的序列。
【输入格式】
输入一行包含一个整数 n。
【输出格式】
输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。
【样例输入】
4
【样例输出】
7
【样例说明】
以下是满足条件的序列:
4 1
4 1 1
4 1 2
4 2
4 2 1
4 3
4 4
【评测用例规模与约定】
对于 20% 的评测用例,1 <= n <= 5;
对于 50% 的评测用例,1 <= n <= 10;
对于 80% 的评测用例,1 <= n <= 100;
对于所有评测用例,1 <= n <= 1000。
对于这个题目,可以使用深搜进行解决,使用一个二维数组a纪录前两个值时的种类有多少,因为没有规定位数,于是使用暴力,将每种情况都进行遍历,重要的是使用记忆化防止重复计算,使用一个数组纪录上一个使用的值.
code
n = int(input())
first = 0
last = 0
sumvalue = 0 #纪录全部的种类数
b = [[0 for i in range(n+1)] for row in range(n+1)] #记忆化前两个的值
def dfs(x): #功能是返回在差值为x时,first和last能够得到的序列个数
global first,last,sumvalue
if (x <= 1):
return 1 # 如果不能在搜索了
if (b[first][last] != 0):
return b[first][last]
temp1 = last
temp2 = sumvalue #纪录
for j in range(1,x):
first = temp1
last = j
temp = sumvalue #纪录下没有变化的值
sumvalue+=dfs(abs(first-last)) #一直搜到底,算出第三个数取值情况,即(last,j)
b[first][last] = (sumvalue-temp) #存储
return sumvalue-temp2 #
sumvalue =0
for i in range(1,n+1): #从第一个开始遍历
first = n
last = i
sumvalue+=1
dfs(abs(first-last)) #用于遍历,不相加是因为函数里面已经相加
print(sumvalue)
**No.10.晚会节目单 **
小明要组织一台晚会,总共准备了 n 个节目。然后晚会的时间有限,他只能最终选择其中的 m 个节目。
这 n 个节目是按照小明设想的顺序给定的,顺序不能改变。
小明发现,观众对于晚上的喜欢程度与前几个节目的好看程度有非常大的关系,他希望选出的第一个节目尽可能好看,在此前提下希望第二个节目尽可能好看,依次类推。
小明给每个节目定义了一个好看值,请你帮助小明选择出 m 个节目,满足他的要求。
【输入格式】
输入的第一行包含两个整数 n, m ,表示节目的数量和要选择的数量。
第二行包含 n 个整数,依次为每个节目的好看值。
【输出格式】
输出一行包含 m 个整数,为选出的节目的好看值。
【样例输入】
5 3
3 1 2 5 4
【样例输出】
3 5 4
【样例说明】
选择了第1, 4, 5个节目。
【评测用例规模与约定】
对于 30% 的评测用例,1 <= n <= 20;
对于 60% 的评测用例,1 <= n <= 100;
对于所有评测用例,1 <= n <= 100000,0 <= 节目的好看值 <= 100000。
题目意思就是需要找出前面最大的m个节目,于是只需要首先找到前m个好看的节目,然后按顺序输出即可
n,m =map(int,input().split())
a = [int(n) for n in input().split()]
b =a.copy()
b.sort(reverse=True)
b = b[:m]
for i in a:
if i in b:
print(i,end=' ')