飞道的博客

蓝桥杯python练习

338人阅读  评论(0)

1.单词分析*

字符串+暴力

题目描述
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。

现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。

输入描述
输入一行包含一个单词,单词只由小写英文字母组成。

对于所有的评测用例,输入的单词长度不超过 1000。

输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。

第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。

输入输出样例
示例 1
输入

lanqiao
copy
输出

a
2
copy
示例 2
输入

longlonglongistoolong
copy
输出

o
6
copy
运行限制
最大运行时间:1s
最大运行内存: 256M

题解:

import os
import sys

# 请在此输入您的代码
word = input()
num = 0
b = []
for i in word:
  tmp = word.count(i)
  if tmp >= num:
    num = tmp
for j in word:
  if word.count(j)==num:
    b.append(j)
b.sort()
print(b[0])
print(num)

 

2022年省赛

1.九进制转十进制

python的次方表示

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

九进制正整数 (2022)_9(2022)
9

转换成十进制等于多少?

运行限制
最大运行时间:1s
最大运行内存: 512M

代码:

import os
import sys

# 请在此输入您的代码
ans = 2+2*9+2*9**3
print(ans)

2.裁纸刀 ×

问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝有一个裁纸刀,每次可以将一张纸沿一条直线裁成两半。

小蓝用一张纸打印出两行三列共 6 个二维码,至少使用九次裁出来,下图给出了一种裁法。

图片描述

在上面的例子中,小蓝的打印机没办法打印到边缘,所以边缘至少要裁 4 次。另外,小蓝每次只能裁一张纸,不能重叠或者拼起来裁。

如果小蓝要用一张纸打印出 20 行 22 列共 440 个二维码,他至少需要裁多少次?

运行限制
最大运行时间:1s
最大运行内存: 256M

代码:

import os
import sys

# 请在此输入您的代码
# 我靠,这个题目当时好像没看懂什么意思
ans = 4+19+21*20
print(ans)

3.求和 ×

问题描述
给定 nn 个整数 a_1, a_2, · · · , a_na 1
​ ,a 2 ,⋅⋅⋅,a n ,求它们两两相乘再相加的和,即:
S=a_{1} \cdot a_{2}+a_{1} \cdot a_{3}+\cdots+a_{1} \cdot a_{n}+a_{2} \cdot a_{3}+\cdots+a_{n-2} \cdot a_{n-1}+a_{n-2} \cdot a_{n}+a_{n-1} \cdot a_{n}
S=a 1 ⋅a 2 +a 1 ⋅a 3 +⋯+a 1 ⋅a n​ +a 2⋅a 3 +⋯+a n−2 ⋅a n−1 +a n−2​ ⋅a n
+a n−1 ⋅a n

输入格式
输入的第一行包含一个整数 nn。

第二行包含 nn 个整数

输出格式
输出一个整数 SS,表示所求的和。请使用合适的数据类型进行运算。

样例输入
4
1 3 6 9
copy
样例输出
117
copy
评测用例规模与约定
对于 30 %30% 的数据,1 \leq n \leq 1000,1 \leq a_{i} \leq 1001≤n≤1000,1≤a
i

≤100 。

对于所有评测用例, 1 \leq n \leq 200000,1 \leq a_{i} \leq 10001≤n≤200000,1≤a
i

≤1000 。

运行限制
最大运行时间:1s
最大运行内存: 512M

代码:

import os
import sys

# 请在此输入您的代码
a = input()
b = list(map(int,input().split(' ')))
# print(b)
ans = 0
d = sum(b)
for i in b:
  d = d-i
  ans += i*d
print(ans)

4.修剪灌木 ×

之前题目意思没搞懂
问题描述
爱丽丝要完成一项修剪灌木的工作。

有 NN 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌 木, 让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始, 每天向右修剪一棵灌木。当修剪了最右侧的灌木后, 她会调转方向, 下一天开 始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。

灌木每天从早上到傍晩会长高 1 厘米, 而其余时间不会长高。在第一天的 早晨, 所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。

输入格式
一个正整数 NN, 含义如题面所述。

输出格式
输出 NN 行, 每行一个整数, 第 ii 行表示从左到右第 ii 棵树最高能长到多高。

样例输入
3
copy
样例输出
4
2
4
copy
评测用例规模与约定
对于 30 %30% 的数据, N \leq 10N≤10.

对于 100 %100% 的数据, 1<N \leq 100001<N≤10000.

运行限制
最大运行时间:1s
最大运行内存: 512M

import os
import sys

# 请在此输入您的代码
"""这个当时应该没做出来"""

# 关键:看清题目意思:1.每次会剪光 4.剪得时间和长得时间不同
# 2.同一棵树,有两个成长结果,先左后右和先有后左的结果是不一样
# 3.那个间隔的计算要小心
n = int(input())

for i in range(1,int(n)+1):
  ans = max(i-1,n-i)*2
  print(ans)

5.排列字母

字典排序
问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝要把一个字符串中的字母按其在字母表中的顺序排列。

例如,LANQIAO 排列后为 AAILNOQ。

又如,GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPSTUUYYY。

请问对于以下字符串,排列之后字符串是什么?

WHERETHEREISAWILLTHEREISAWAY

运行限制
最大运行时间:1s
最大运行内存: 512M

代码:

import os
import sys

# 请在此输入您的代码
word = input()
dict = {
   }
for i in word:
  if i in dict.keys():
    dict[i] += 1
  else:
    dict[i] = 1
# print(dict)
dict2 = sorted(dict.items(),key=lambda x:x[0],reverse=False)
# print(dict2)
# print(type(dict2))
for i in range(len(dict2)):
  for j in range(int(dict2[i][1])):
    print(dict2[i][0],end="")


 

6.刷题统计

问题描述
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 aa 道题目, 周六和周日每天做 bb 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 nn 题?

输入格式
输入一行包含三个整数 a, ba,b 和 nn.

输出格式
输出一个整数代表天数。

样例输入
10 20 99
copy
样例输出
8
copy
评测用例规模与约定
对于 50 %50% 的评测用例, 1 \leq a, b, n \leq 10^{6}1≤a,b,n≤10
6
.

对于 100 %100% 的评测用例, 1 \leq a, b, n \leq 10^{18}1≤a,b,n≤10
18
.

运行限制
最大运行时间:1s
最大运行内存: 256M

import os
import sys

# 请在此输入您的代码
a,b,n = map(int,input().split())

five = a*5
week = five+2*b
day = 0

if n<=five:
  if n%a==0:
    day = n//a
  else:
    day = n//a+1

elif n<=week:
  if n>five+b:
    day = 7
  else:
    day = 6

else:
  day = (n//week)*7
  n = n%week
  if n<=five:
    if n%a==0:
      day += n//a#这里搞鬼哦,最后一个测试样例:如果是0,n/a,则是0.0,加上0.0居然会加一
      # print(day)这个时候大的数据变成了科学计数法
    else:
      day += n//a+1

  else :
    if n>five+b:
      day += 7
    else:
      day += 6

print(int(day))

 

7.纸张尺寸

问题描述
在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm \times× 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm \times× 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。

输入纸张的名称, 请输出纸张的大小。

输入格式
输入一行包含一个字符串表示纸张的名称, 该名称一定是 A0、A1、A2、 A3、A4、A5、A6、A7、A8、A9 之一。

输出格式
输出两行,每行包含一个整数,依次表示长边和短边的长度。

样例输入1
A0
copy
样例输出1
1189
841
copy
样例输入 2
A1
copy
样例输出 2
841
594
copy
运行限制
最大运行时间:1s
最大运行内存: 512M

import os
import sys

# 请在此输入您的代码
a0 = [1189,841]
a = a0[0]
b = a0[1]

inn = input()
inn = int(inn[1:])
if inn == 0:
  print(a0[0])
  print(a0[1])
else:
  for i in range(1,inn+1):
    if a>b:
      a = a//2
    else:
      b = b//2
  if a>b:
    print(a)
    print(b)
  else:
    print(b)
    print(a)

 

转载:https://blog.csdn.net/qq_51976555/article/details/128555520
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场