第十二届蓝桥杯模拟赛Python组(第三期)

第一题

问题描述

请问在1到2020中 ,有多少个数与2020互质,即有多少个数与2020的最大公约数为1。

答案提交

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

'''
2020 最小公约数2,5,101
'''
if __name__ == '__main__':
    count = 0
    for i in range(1,2020):
        if i % 2 == 0 or i%5 == 0 or i%101 == 0:
            continue
        else:
            count += 1
    print(count)

结果: 800

第二题

问题描述

ASCII码将每个字符对应到一个数值(编码) ,用于信息的表示和传输。在ASCII码中 ,英文字母是按从小到大的顺序
依次编码的,例如:字母A编码是65,字母B编码是66,字母C编码是67,请问字母Q编码是多少?

答案提交

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

if __name__== '__main__':
    print(ord('Q'))

结果: 81

第三题

问题描述

有一棵二叉树,一个由2021个结点,其中有1000个结点有两个子结点 ,其他的结点有一个或者0个子结点。
请问,这棵二叉树有多少个叶结点?

答案提交.

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

n0 = n2+1;

n2 = 1000;

n0 = 1001;

第四题

问题描述

对于整数v和p ,定义Pierce序列为:
a[1] = V
a[i]= p % a[i-1]
例如,当v=8,p= 21时,对应的Pierce列为
a[1] = 8
a[2]= 5
a[3] = 1
再往后计算,值变为0,不在我们考虑的范围内。因此当v= 8,p= 21时 ,Pierce 列的长度为3。
当p-定时,对于不同的v值, Pierce 列的长度可能不同 。当p=8时,若1<=v<p,最长的Pierce列出现在
v=13时,为(13, 8,5, 1),长度为4。.
当p=2021时,最长的Pierce序列出现在v=1160时 ,请问这个序列有多长?

if __name__== '__main__':
    v,p = map(int,input().split())
    a = []
    i = 1
    a.append(v)
    
    while a[-1] != 0:
        a.append(p%a[i-1])
        i += 1
    a.pop()
    print(a)
    print(len(a))

结果: [1160, 861, 299, 227, 205, 176, 85, 66, 41, 12, 5, 1]
12

第五题

问题描述

在Excel中,第1列到第26列的列名依次为A到Z,从第27列开始,列名有两个字母组成,第27列到第702列的列名依次为AA到ZZ。之后的列再用3个字母 、4个字母表示 。

请问 ,第2021列的列名是什么?

答案提交

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


num = int(input())

lst = [chr(65+i) for i in range(26)]
str1 = ''

while num != 0:
    if num%26==0:
        
        str1 = lst[25] + str1
        num = num//26 -1
    else:
        str1 = lst[num%26-1] + str1
        num //=26
        

print(str1)

第六题

问题描述
在书写一个较大的整数时,为了方便看清数位,通常会在数
位之间加上逗号来分割数位,具体的,从右向左,每三位分成一
段 ,相邻的段之间加一个逗号 。
例如,1234567 写成1,234,567.
例如,17179869184 写成17,179,869,184。
给定一个整数 ,请将这个整数增加分割符后输出。
输入格式
输入一行包含一个整数 V 。
输出格式
输出增加分割符后的整数 。
样例输入
1234567
样例输出
1,234,567
样例输入
17179869184
样例输出
17,179,869,184
数据规模和约定
对于50%的评测用例,0<=v< 10^9 (10的9次方)。
对于所有评测用例,0<=v < 10^18 (10的18次方)。
思路1:

lst1 = list(input())
lst1.reverse()
lst2 = []
count = 0
for i in lst1:
    count += 1
    lst2.append(i)
    if count == 3:
        count = 0
        lst2.append(',')

lst2.reverse()
print(''.join(lst2))

思路2:

v = int(input())
print('{:,}'.format(v))

第七题

问题描述
小蓝正在写一个网页显示一个新闻列表 ,他需要将总共n条新闻显示,每页最多可以显示p条,请问小蓝至少需要分多少页显示?
例如,如果要显示2021条新闻,每页最多显示10条 ,则至少要分203页显示 。
输入格式
输入的第一行包含一个整数n,表示要显示的新闻条数。
第二行包含一个整数p,表示每页最多可以显示的条数。
输出格式
输出一个整数,表示答案 。
样例输入
2021
10
样例输出
203
样例输入
2020
20
样例输出
101
数据规模和约定
对于所有评测用例 ,1 <= n<= 10000, 1 <=p <=
100。


if __name__=='__main__':
    count = int(input())

    num = int(input())

    res = count // num
    if count %num != 0:
        res += 1
    print(res)

第八题

问题描述
杂货铺老板一共有N件物品,每件物品具有ABC三种属性中的一种或多种。从杂货铺者板处购得一件物品需要支付相应的代价 。
现在你需要计算出如何购买物品,可以使得ABC三种属性中的每一种都在至少一件购买的物品中出现 ,并且支付的总代价最小。

输入格式

输入第一行包含一个整数N。
以下N行,每行包含一个整数C和一个只包含 "ABC"的字符
串,代表购得该物品的代价和其具有的属性 。

输出格式

输出一个整数,代表最小的代价。如果无论如何凑不齐ABC
三种属性,输出-1。
样例输入
5
10 A
9 BC
11 CA
4 A
5 B
样例输出
13
数据规模和约定
对于50%的评测用例 ,1 <= N <= 20
对于所有评测用例,1 <=N <= 1000,1 <=C<=
100000

n = int(input())
string = [None for i in range(n)]
value = [None for i in range(n)]

for i in range(n):
    temp = input().split()
    value[i] = int(temp[0])
    string[i] = temp[1]

def dfs(zifu,cost,index):
    min_cost = float('inf')
    if 'A' in zifu and 'B' in zifu and 'C' in zifu:
        return cost
    # if index>n:
    #     return float('inf')
    for i in range(index,n):
        print(''.join([zifu,string[i]]),cost+value[i],i+1)
        cost1 = dfs(''.join([zifu,string[i]]),cost+value[i],i+1)
        if cost1<min_cost:
            min_cost = cost1
    return min_cost

min_cost = dfs('',0,0)
print(min_cost)

第九题

问题描述
  给定一个矩阵 M ,由 n 行 m 列组成,第 i 行第 j 列值为 M[i][j] 。
  定义矩阵 M 的重量为矩阵中所有元素的和,记为weight(M)
  请找到矩阵左上角的一个子矩阵S(矩阵的前 r 行中的前 c 列组成) ,使得这个子矩阵的重量的两倍最接近矩阵 M 重量 。即 |2 weight(S)-weight(M)| 最小。
  如果有多个子矩阵满足条件,请找出面积 r * c 最小的一个。
  如果仍然有多个子矩阵满足条件,请找出其中 r 最小的一个 。
输入格式
  输入第一行包含两个整数 n, m ,表示矩阵的大小。
  接下来 n 行 ,每行 m 个整数,表示给定的矩阵M。
输出格式
  输出一行,包含两个整数 r, c ,表示子矩阵为矩阵 M 的前 r 行中的前 c 列 。
样例输入
3 4
3 0 1 1
1 0 1 1
1 1 -2 4
样例输出
2 3
数据规模和约定
  对于 30% 的评测用例,1 <= n, m <= 20, -10 <= M[i][j] <= 10。
  对于 50% 的评测用例,1 <= n, m <= 100, -100 <= M[i][j] <= 100。
  对于所有评测用例 ,1 <= n, m <= 1000, -1000 <= M[i][j] <= 1000 。

第十题

问题描述
给定一个序列(a .1,a 2…a. _n), 它的-个上升子序列是指从序列中取出一些元素,按照原来的顺序排列后,是单调递增的列。

例如,对于序列(3,2,7,6,7),取出下标为2, 4, 5的元素a_2,a_4,a_5,即2,6,7,是一个上升子序列。

在这个序列中 ,有7个长度为2的上升子序列,例如
1.下标1, 3对应的3, 7;
2.下标1, 4对应的3, 6;
3.下标1,5对应的3,7;
4.下标2, 3对应的2, 7;
5.下标2, 4对应的2, 6;
6.下标2, 5对应的2, 7;
7.下标4,5对应的6,7 。
注意,可能有下标不同但对应数值相同的上升子序列 ,他们应当算成不同的上升了序列。

给定序列,请问序列中一共有多少个长度为k的上升子序列。

输入格式

输入第一行包含两个整数n, k,表示序列的长度和上升子序列的长度 。
第二行包含n个整数a 1,a 2… _n,表示给定的序列 。

输出格式

输出一行,包含一个整数 , 表示长度为k的上升子序列的数
量 ,答案可能很大,请输出答案除以000007的余数。

样例输入

52
32767

样例输出

7

本文版权归趣KUAI排www.SEOguruBlog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ→61910465