第十四届蓝桥杯赛前准备资料存档

发布时间 2023-04-17 20:06:25作者: 东血

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)