这篇文章是为蓝桥杯做准备时顺便做的笔记,用来讨论即参考用的,如有错误欢迎指正,有更好的方法也可以提出来一起讨论,谢谢各位大佬们orz
因为本人不是VIP,只能刷蓝桥杯里面的普通题,还请见谅orz
注:代码中的input别尚自加东西进去,会报错。别问,问就是血淋淋的教训,改了半个小时的代码QAQ
基础练习
A+B问题
content = input()
str_list = content.split(' ')
int1 = int(str_list[0])
int2 = int(str_list[1])
result = int1 + int2
print(result)
数列排序
这道题我自己写了一个快速排序,也是给自己做练习用的,可以直接用python自带的排序函数
python自带函数
n = int(input())
arr = list(map(int,input().split()))
arr = sorted(arr)
for i in range(n):
print(arr[i],end=' ')
快速排序
n = int(input())
arr = list(map(int,input().split()))
def partition(arr,low,high):
i = low
j = high
if low < high:
key = arr[low]
while i < j:
while arr[j] >= key and j != i:#向前寻找,找寻比key小的数
j-=1
arr[i],arr[j] = arr[j],arr[i]#交换位置
while arr[i] < key and i != j:#向后寻找,找寻比key大的数
i+=1
arr[j],arr[i] = arr[i],arr[j]#交换位置
else:
partition(arr,low,i-1)
partition(arr,i+1,high)
partition(arr,0,n-1)
for i in range(n):
print(arr[i],end=' ')
十六进制转八进制
n = int(input())
arr = []
j = 0
for i in range(n):
arr.append(input())
for i in arr:
print(oct(int(i,16)).split('o')[-1])
十六进制转十进制
n = input()
print(int(n,16))
十进制转十六进制
这道题里面的输出要注意,他要求输出的字母是大写,所以可以用upper函数转过来
n = int(input())
a = hex(n).split('x')[-1]
print(a.upper())
特殊回文数
代码中的continue是出于习惯加进去的,听说在循环里能加快运行速度,但实际本人并没有测试过
n = int(input())
for i in range(10000,1000000):
istr = str(i)
if istr[:] == istr[::-1]:
b = [int(j) for j in istr]
if sum(b) == n:
print(i)
else:
continue
else:
continue
回文数
回文数的特点就是正向读和反向读是一样的,所以可以直接判定字符串正向和反向是否相同即可
for i in range(1000,10000):
istr = str(i)
if istr[:] == istr[::-1]:
print(i)
特殊的数字
def ok(a):#用于映射
return a**3
for i in range(100,1000):
istr = str(i)
iint = [int(j) for j in istr]
iint = list(map(ok,iint))
if sum(iint) == i:
print(i)
杨辉三角形
方法一
n = int(input())
k = []#用来存储杨辉三角形的元素
for i in range(1,n+1):
if i == 1:
k.append(1)
print(1)
else:
for j in range(1,i+1):
if j == 1:#第一列都是1
print(1,end=' ')
k.append(1)
elif j == i:#每行的最后一列也是1
print(1)
k.append(1)
else:
#从杨辉三角形中找规律,可以发现除第一列和最后一列的元素,其它的都是其上一行正上方的元素加左上角的元素,所以找到其在列表k中对应的位置即可
num = int(i*(i+1)/2) - i + j
k.append(k[num-i]+k[num-i-1])
print(k[num-i]+k[num-i-1],end=' ')
方法二
第一个方法就直接推规律即可,第二个方案是按照杨辉三角的规律公式来的,每个元素的值与其行列的关系如下: a i j = C i − 1 j − 1 a_{ij}=C_{i-1}^{j-1} aij=Ci−1j−1
其中 i i i表示第 i i i行, j j j表示第 i i i行内从左到右第