随笔分类 - 数学原理
摘要:BSGS 假设对于给定的a,b,质数p,我们要求满足$a^x=b(mod\;p)$的所有x。 一个常规的想法是直接枚举[1,p 1],因为$a^{p 1}=1(mod\;p)$,超过p就开始循环了,但是在p的范围较大时不可行。 我们先求出$[1,\sqrt[2]{x}]$的答案,然后对于更大的,直接
阅读全文
摘要:求模意义下的组合数$C^k_n\;mod\;p$是十分常见的问题,根据数据的不同也有多种求法,下面来谈谈一些常见的解法。 $[0]: 求n!\;mod\;p$ 代码: void init() { fact[0]=1; rep(i,1,p) fact[i]=(fact[i 1] i)%p; } int
阅读全文
摘要:中国剩余定理 CRT用于求解一组模线性方程组的解:$x\;mod\;m_i = a_i$。 令$M_i=\prod_{k=1\;and\;k\neq i}^nm_i$,求解$w_iM_i+km_i=1$,则答案在模$M$意义下的唯一解为$x=\sum_{i=1}^n w_iM_ia_i$ 代码:
阅读全文
摘要:有这样一类问题:给出一个图,然后什么东西在上面跑,求出某个期望之类的。 大概两种做法: 直接设出目标状态,通过图上的关系可以构造出目标状态之间的一些关系,直接高斯消元即可,例子: "BZOJ 2377" 直接设出目标状态不好求关系,我们从暴力角度入手,如果可以把它看成每次迭代一个矩阵,每次加上它的某
阅读全文
摘要:高斯消元适用于求解一组线性方程组,它包含$n+1$个$n$维向量,前面的$n n$矩阵为系数矩阵,在算法结束后,$A_{i,n+1}$即为$x_i$的值,根据适当修改也可求解非唯一解或无解情况。 行列式 高斯消元还可以在$O(n^3)$时间以内求得一个方阵的行列式,原理:通过初等行变换将矩阵变为上三
阅读全文
摘要:解方程组:高斯消元,复杂度$O(n^3)$ 矩阵求逆:对矩阵$(A |I_n)$进行初等行变换,结果为$(I_n|A^{ 1})$,复杂度为$O(n^3)$ 只求逆矩阵的第$i$列:设$E_i$为$I_n$的第$i$列,解方程组$Ax=E_i$,向量$x$即为所求列,复杂度为$O(n^3)$,但常数
阅读全文
摘要:第一类斯特林数: 定义: 我们用$s(n,k)$表示多项式$x(x 1)……(x n+1)$中$x^k$的系数(无符号),记为第一类斯特林数。 它的组合意义为:有$n$个点,$k$个环的置换个数。 性质: 由此我们可以得出一个递推式:$s(n,k)=s(n 1,k 1)+(n 1)s(n 1,k)$
阅读全文
摘要:在大多数数论的朴素筛法中,时间复杂度通常为O(nloglogn),尽管已经十分快了,但在有些情况下不适用。为此欧拉提出了一种筛法,能够在O(n)时间内求出1~n的所有素数,而且有很大拓展空间。 代码: void get_prime(int n) { memset(is_prime,true,size
阅读全文
摘要:矩阵: 长为n,宽为m,里面包含nm个元素。 矩阵数乘: kA,即为kA[i][j] 矩阵加法: C=A+B ,即为C[i][j]=A[i][j]+B[i][j] 类似的我们定义减法A+B为A+( 1)B 零矩阵: 所有元素都为0的矩阵 向量: n或m为1的矩阵,n为1则为行向量,m为1则为列向量
阅读全文
摘要:欧几里得算法: 对于给定的整数a,b,我们可以在O(logn)的时间里求出它们的最大公约数,即使用著名的欧几里得算法(辗转相除法)解决这个问题。 这个算法基于以下事实: Gcd( a , b ) = Gcd(b , a%b ) ,当b=0,Gcd=a 扩展欧几里得算法: 由裴蜀定理可得,对于一组整数
阅读全文
摘要:加法原理 :做一件事有n种办法,每种办法有p[i]个方案,总方案为p[1]+p[2]+……p[n] 乘法原理 :做一件事有n个步骤,每个步骤有p[i]个方案,总方案为p[1] p[2]……p[n] 排列 :在n个元素中选择k个(顺序不同为不同方案),有P(n,k)种方案,其中P(n,k)=n!/(n
阅读全文
摘要:定义: 对于A,P两个整数,若存在x,使A x=1 (mod P),则称x为A模P的乘法逆元。 解法: 对于给出A,P,我们要求x使A x=1(mod P),即求出一组x,y,使满足方程A x+P y=1 用扩展欧几里得算法求解即可(求出x有可能为负数,注意题意是否允许这种情况)。 (1)当A,P互
阅读全文

浙公网安备 33010602011771号