2.蓝桥杯 python 常用知识
约 751 字大约 3 分钟
2025-03-31
数论
质数
会一个线性筛法就可以了
primes = []
cnt = 0
st = [False] * 1000000
def get_prime(n):
for i in range(2,n+1):
if st[i]==False:
primes.append(i)
j= 0
while(primes[j]*i<=n):
st[primes[j]*i] = True
if i%primes[j]==0:
break
j += 1
get_prime(100)
print(primes)
欧几里得算法
def gcd(a,b):
while b:
a,b = b,a%b
return a
def gcd2(a,b):
return a if b==0 else gcd2(b,a%b)
质因数分解
每个数都可以表示为质数的乘积 n=p1k1∗p2k2∗...∗pmkm
题目: 给定 n 个正整数, 求它们乘积的约数的个数 0<n<100ai<109
约数
约数的个数
如果一个数 n 的质因数分解为 p1k1∗p2k2∗...∗pmkm, 那么它的约数个数为 (k1+1)∗(k2+1)∗...∗(km+1).
约数的和
如果一个数 n 的质因数分解为 p1k1∗p2k2∗...∗pmkm, 那么它的约数的和为 (p10+p11+...+p1k1)∗(p20+p21+...+p2k2)∗...∗(pm0+pm1+...+pmkm).
货物摆放
2021第十二届蓝桥杯C/C++省赛B组
题目描述
小蓝有一个超大的仓库,可以摆放很多货物。
现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。
小蓝希望所有的货物最终摆成一个大的长方体。即在长、宽、高的方向上分别堆 L、W、H 的货物,满足n=L×W×H。
给定 n,请问有多少种堆放货物的方案满足要求。
例如,当 n = 4时,有以下 6 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2 × 2 × 1、4 × 1 × 1。
请问,当 n = 2021041820210418 (注意有 16 位数字)时,总共有多少种方案?
提示:建议使用计算机编程解决问题。
欧拉函数
在数论中, 欧拉函数 ϕ(n) 是小于等于 n 的正整数中与 n 互质的数的个数.
如果一个数 n 的质因数分解为 p1k1∗p2k2∗...∗pmkm, 那么它的欧拉函数为 ϕ(n)=n∗(1−p11)∗(1−p21)∗...∗(1−pm1).
欧拉定理
如果 a 和 n 互质, 那么 aϕ(n)≡1modn. 举例: a=5,n=6, ϕ(6)=2, 52≡1mod6.
datetime
依据年,月,日 来创建日期对象
from datetime import date
d = date(2023, 3, 31)
print(d) # 2023-03-31
日期的偏差
timedelta
from datetime import date, timedelta
d = date(2023, 3, 31)
print(d + timedelta(days=1)) # 2023-04-01
t = timedelta(days=1,hours=1,minutes=1,seconds=1) # 1 day, 1:01:01
print(t.total_seconds()) # 90061.0
print(t.days) # 1
print(t.seconds) # 3661 可以得到所有的秒数
杂项
将字符转换为整数
ord
ord('a') # 97
ord('A') # 65
将整数转换为字符
chr
chr(97) # 'a'
chr(65) # 'A'
四舍五入
round
round(1.5) # 2