蓝桥杯牛客1-10重点(自用)
1
import math
def lcm(a,b):
return a * b // math.gcd(a, b)
# math.gcd(a, b)最小公倍数
a,b = map(int,input().split())
# a = int(input()) # 只读取一个整数
# print(a)
print(lcm(a,b))
2
import os
import sys
def fly(lists,n):
count = 0
flag = False
for i in range(1,n):
if lists[i] > lists[i-1] :
flag = True
elif lists[i] < lists[i - 1] and flag :
flag = False
count += 1
return count
n = int(input())
lists = list(map(int, input().split()))
print(fly(lists,n))
3.1
# Bob搜索
import os
import sys
def find(s):
#字母 最大最小
s = s.upper()
# s = s.lower()
return s.find("BOB")
s = input().strip() # 去掉首位两个字符
print(find(s))
3.2
# Bob搜索找到多个
import os
import sys
def find(s):
s = s.upper()
# s = s.lower()
count = 0
index = 0
positions = []
while True:
index = s.find("BOB", index)
if index == -1:
break
count += 1
positions.append(index) # 记录位置
index += 1
return count,positions
s = input().strip() # 去掉首位两个字符
print(find(s))
4
import os
import sys
def finish(n, r, p):
n = n % p # 对 n 进行取模操作
res = 1 # 初始结果为 1
while r > 0:
if r % 2 == 1: # 如果 r 是奇数
res = (res * n) % p # 更新结果
n = (n * n) % p # 对 n 平方
r = r // 2 # B 右移
return res
# 读取测试数据组数 T
T = int(input())
# 处理每组测试数据
# 在 Python 中,_ 是一个惯例,表示一个"占位符"或"不关心的变量"。当你不需要使用循环变量时,可以使用 _ 来代替。l
for _ in range(T):
a, b, c = map(int, input().split()) # 输入 A, B, P
print(finish(a, b, c)) # 输出结果
5
import os
import sys
def saolei(n,m,array):
direction = [(-1,-1),(-1,0),(-1,1),(0,1),(0,-1),(1,1),(1,-1),(1,0)]
result =[["0" for _ in range(m)] for _ in range(n)]
for i in range(n):
for j in range(m):
if array[i][j] == "*":
result[i][j]="*"
else:
sum = 0
for x,y in direction:
dx,dy = i+x,j+y
if 0<=dx<n and 0<=dy<m and array[dx][dy]=="*":
sum += 1
result[i][j]=str(sum)
for row in result:
# "".join(row) 的作用是 将 row 中的所有字符合并成一个字符串,不添加任何分隔符。
print("".join(row))
n , m = map(int,input().split())
# n , m = map(int , input().strip())
array = [input().strip() for _ in range(n)]
saolei(n,m,array)
# 2 3
# qw e r
# r s g
# ['qw e r', 'r s g']
# print(array)
6
n,a=int(input()),0
for i in range(2,n+1):
while n%i==0:
n/=i
a+=1
if n>1:
a+=1
if a%2==1:
print("Nancy")
else:
print("Johnson")
7
import math
n = int(input()) # 读取数字的个数
nums = list(map(int, input().split())) # 读取所有数字并转换为列表
# 计算最大差值
max_diff = max(nums) - min(nums)
print(max_diff)
8
n,m=map(int,input().split())
times=list(map(int,input().split()))
times.sort()
c=0
for t in times:
if m>=t:
m-=t
c+=1
else:
break
print(c)
9
a=int(input())
b=a**(1/3)
print(f"{3*b:.3f}")
print(f"{3*b}")
n = 42
print(f"{n:d}") # 输出: 42
pi = 3.14159
print(f"{pi:.2f}") # 输出: 3.14
# f:用于格式化浮点数。
# .nf:表示保留 n 位小数。
value = 12.3456789
print(f"{value:.3f}") # 输出: 12.346
large_number = 1234567890
print(f"{large_number:e}") # 输出: 1.234568e+09
ratio = 0.75
print(f"{ratio:.2%}") # 输出: 75.00%
# f"..." 表示这是一个格式化字符串。
# {name:s}:name 是要嵌入字符串中的变量,而 s 是格式说明符,表示将 name 格式化为字符串。
# 其实这里的 s 是多余的,因为 name 本身已经是一个字符串,默认就会被当作字符串处理。所以,{name} 和 {name:s} 的效果是一样的。
name = "Alice"
print(f"Hello, {name:s}") # 输出: Hello, Alice
10.1
import heapq
n,m,k=map(int,input().split())
a=list(map(int,input().split()))
a=list(map(lambda x:-x, a))
# map(lambda x: -x, a)
# 通过 lambda x: -x 这个匿名函数,把列表 a 中的每个元素都取负值。
# map() 函数会对 a 中的每个元素执行 -x 操作,并返回一个 迭代器。
# list(...)
# map() 返回的是一个迭代器,需要用 list() 转换为列表 a。
heapq.heapify(a)
for _ in range(m): # O(m log n)
while len(a)>k:
heapq.heappop(a)
s=list(map(int,input().split()))
if s[0]==1:
heapq.heappush(a,-s[1])
else:
if len(a)>=k:
print(-a[0])
else:
print(-1)
10.2
n, m, k = map(int, input().split()) # 读取 n, m, k
a = list(map(int, input().split())) # 读取初始数组
for _ in range(m): # O(n * m log n)
s = list(map(int, input().split())) # 读取操作
if s[0] == 1: # 插入元素
a.append(s[1]) # 直接追加到数组中
else: # 查询第 k 小的数
if len(a) >= k:
a.sort() # 先排序(O(n log n))
print(a[k - 1]) # 取第 k 小的元素
else:
print(-1) # 数组元素不足 k 个