- 博客(15)
- 收藏
- 关注
原创 通过求费马小定理求逆元来求组合数
通过求费马小定理求逆元来求组合数:n,a,b=map(int,input().split())mod=1000000007def ksm(a,b,c): ans=1%c while b: if b&1: ans=(ans*a)%c b>>=1 a=(a*a)%c return ans def inv(a,mod):##求a在模mod意义下的逆元 return ksm(a,mod-2,mod)def c(c,m,mod):
2024-07-30 13:50:48 124
原创 堆&优先队列
堆:完全二叉树,自上而下,自左向右添加元素,除了最后一层其他层全为满的,最后一层的节点都靠左对齐。每个节点k都有两个子节点2k+1,2k+2.小根堆:每个节点小于等于子节点。大根堆:每个节点大于等于子节点。python内置库:import heapq定义一个数组a=list(map(int,input().split()))1.将数组a转化为堆(默认为小根堆,如果想变为大根堆那么把元素全加一个负号。)heapq.heapify(a)2.最小堆a中添加元素xheapq.heappush(a,x)3.弹出并返回
2024-04-04 22:56:59 229 1
原创 基础数据结构:链表&栈&队列
链表:链表可以快速插入和删除元素,用于存储数据。链表具有指针域和数据域链表的每个节点维护两部分:指针域和数据域链表维护head和tail(头和尾)每次插入元素从tail处插入新元素用类的定义实现:对于insert:self.tail.next=Node(data)表示建立一个新的数据域self.tail=self.tail.next表示建立一个指针指向这个数据也可以用数组list模拟:pop(idx)模拟取出第idx个元素append(x),insert(idx,x)模拟插入元素x例题:1.约瑟夫环 -
2024-04-03 11:52:08 757 1
原创 高斯消元求解线性方程组
高斯消元即用系数矩阵的主对角线把该列的所有元都消为0。然后根据主对角线上的元和该行的最右侧常数求解Xn。Xn=第n行上的系数/该行上的主对角线的元。时间复杂度=n的立方。
2024-03-30 20:30:09 53
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人