第十四届蓝桥杯赛前准备资料存档
trick
1.在做质因数个数的题时有两个trick,判断质因数:首先可以去除偶数,然后借助基本算数定理
2.取整
- 向上取整:math.ceil()
- 向下取整:math.floor()、整除"//"
- 四舍五入:round()——*奇数向远离0取整,偶数去尾取整;或言之:奇数进位,偶数去尾*
- 向0取整:int()
3.1TB= 1024 GB、1GB=1024MB、1MB = 1024KB、1KB = 1024字节、 1字节 = 8位=8 bit
4.把x保留到小数点后要求的位数
round(x,3)
print(‘%.3f’%x)
print(“{:.3f}”.format(x))
5.进制转换
(1)任意进制转化为十进制,通用方法
print(int('1011',2))
输出为11,int函数中,前面的数表示为二进制的字符类型,后面的2表示为二进制。同理8进制和十六进制转为十进制也是相同的方法。
(2)十进制转化为二进制、八进制、十六进制
print(bin(10))
print(oct(100))
print(hex(1011))
-
hex() 十进制转化为十六进制
-
oct() 十进制转化为八进制
-
bin() 十进制转化为二进制
6.大小写转换
upper() 小写字母转换为大写字母
lower() 大写字母转换为小写字母
7.列表操作
切片:
list[m:n] 从list的索引m开始,到索引n的前一个值
list1=list[::-1] 表示list1是list的逆序
''.join(list) 把list中的元素合成一个字符串
列表常用的方法:
list.append() 末尾增加
list.insert() 插入,可指定位置
list.pop() 删除,可指定位置
8.calendar模块
import calendar
#返回指定日期的星期码,从0开始的
calendar.weekday(year,mon,day)
#返回该月第一天的星期码与该月的天数,以元组的形式返回。
calendar.monthrange(year,mon)
#返回(year1, year2)中的闰年个数
calendar.leapdays(year1,year2)
#判断指定年份是否为闰年,返回布尔值判定
calendar.isleap(year)
#返回指定年份的日历(以字符串的形式),这个最好是在本地调试使用,对于一些星期计数的填空题,可以直接数。
calendar.calendar(year)
9.去重
lst = list(set(l1))
利用set()方法最简单,但会改变其顺序。
10.回文数判断
a=12345654321
str(a)[::1]==str(a)[::-1]
11.排序
(1) sort()方法
用于对原列表进行排序(默认为升序排序),排序后的新列表会覆盖原列表。
x = [3, 2, 1, 4]
x.sort()
print(x)
(2) reverse()方法
用于将列表中的元素反向存放。请记住这是倒序输出。
x = [3, 2, 1, 4]
x.reverse()
print(x)
(3) sorted()方法
x = [3, 2, 1, 4]
y = sorted(x)
print(x)
print(y)
降序排列:
y = sorted(x,reverse=True)
12.全排列代码
from itertools import permutations
#也可以是字符
print(list(permutations([1, 2, 3]))) # [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
13.阶乘
import math
math.factorial(5)
14.队列
from collections import deque
# 初始化一个最大长度为3的队列
d = deque([1,2,3], maxlen=3)
# 因为初始化队列最大长度为3,再添加元素会把队头元素挤出
d.append(4)
# 初始化一个不限制长度的队列
d = deque()
# 添加元素到队尾部
d.append(1)
d.append(2)
d.append(3)
# 将队首的元素弹出返回
print(d.popleft())
# 弹出队尾元素并返回值
print(d.pop())
# 在队首插入元素
d.appendleft(0)
15.质数判断
def isPrim(n: int) -> bool:
"""判断是否是质数 O(✓n)"""
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
例如:质因数个数
n = int(input())
ans = 0
i = 2
while i*i<=n:
if n%i==0:
ans+=1
while n%i==0:
n//=i
i+=1
if n>1:
ans+=1
print(ans)
16.最大公约数
def gcd(n1, n2):
return gcd(n2, n1 % n2) if n2 > 0 else n1
17.最小公倍数
def gcd(n1, n2):
return gcd(n2, n1 % n2) if n2 > 0 else n1
def lcm(n1, n2):
return (n1 * n2) // gcd(n1, n2)