定理总结

余数:
1>同余:若a , b除以c的余数相等,则a与b相对于除数c是同余的,即a≡ b(mod c)!
2>同余的两个数的差能整除除数:如 10 % 3 = 1, 7 % 3 = 1,10≡ 7 (mod 3)则(10 - 7 )% 3 = 0.
3>余数可加性(可减性同):两个数对于某个除数的余数和对此除数的余数等于两个数的和对此除数的余数!如 (11 % 3 + 8 % 3 )% 3= (11 + 8) % 3
4>两个数对某个除数的余的乘积对此除数的余数等于两个数的乘积对此除数的乘积对此!: 如 [ (11%3 )* (8%3 ) ] % 3 = (11 * 8)%3
5>余数乘方性: 如果a与b除以m的余数相同,那么an与bn除以m的余数也相同,但不一定等于原余数.
例如:3,7除以4的余数都是3,可以算得32和72除以4的余数都等于1,它们的余数相等但不一定等于3.


费马小定理:
费马小定理是数论中的一个重要定理,
其内容为: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1) ≡1(mod p)
假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1

 

模乘法得逆:
对于两个整数a,b,a/b是整数,且a和b除以mod得余数分别为aa,bb,
则a/b除以mod得余数为(aa*bb^(-1))%mod,其中b^(-1)是b的逆.
(当(a*b)%mod=1是,我们称a和b互为乘法的逆,即a=b^(-1),b=a^(-1))
相关代码:

定理总结
void gcd(LL a,LL b,LL &d,LL &x,LL &y)//拓展欧几里得定理,求ax+by=gcd(a,b)的一组解
{
if(!b){d=a;x=1;y=0;}
else{gcd(b,a%b,d,y,x);y-=x*(a/b);}
}
LL inv(LL a,LL n)//求得a在模n条件下的逆
{
LL d,x,y;
gcd(a,n,d,x,y);
return d==1?(x+n)%n:-1;
}
View Code

推论1:mod为质数,由费马小定理得b^(mod-1)%mod=1-->(b*b^(mod-2))%mod=-1,所以b的逆=b^(mod-2).
对于整数a,b(b<mod),且a/b是整数,则a/b除以mod得余数是(a%mod*b^(-1))%mod-->(a%mod*b^(mod-2))%mod.可用于求分数形式整数的模


SG定理
组合游戏:一个状态是必败状态当且仅当它的所有后继都是必败状态;一个状态是必胜条件当且仅当它至少有一个后继是必败状态
组合游戏的和。假设有k个组合游戏G1,G2,...Gk,可以定义一个新游戏,在每个回合中,
当前游戏可以任选一个子游戏Gi进行一次合法操作,而让其他游戏的局面保持不变,不鞥操作的游戏者输。
这个新游戏称为G1,G2,...,G3的和
SG函数和SG定理。对于任意状态x,定义SG(x)=mex(S),其中S是x的后继状态的SG函数值集合,mex(S)表示不在S内的最小非负
整数。SG(x)当且仅当x为必败状态.游戏和的SG函数SG函数等于各子游戏SG函数的Nim和。
Bouton定理:状态(x1,x2,x3)为必败状态当且仅当x1^x2^x3=0,称为Nim和。可看做SG定理在Nim游戏中的运用

pick定理
给定一个顶点均为整点(即坐标为整数的点)的简单多边形,其面积A和内部格点数目I与边上格点数目B的关系式:A=I+B/2-1.

Lucas定理
A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。
则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) ?mod p同余
即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)?


欧拉定理
a^(phi(n))≡1(mod n) (a,n互质), phi(n)是欧拉函数,表示不超过n的且与n互质的数的个数。

 

五边形数定理
可用于生成函数(母函数):
(1-x-x^2+x^5+x^7-x^12...)(1+p(1)x+p(2)x^2+p(3)x^3)=1;(整数划分的生成函数为1/∏(1-x^i))
得到p(n)=p(n-1)+p(n-2)-p(n-5)-p(n-7)+...

 

柯尼希定理(最小顶点覆盖,二分图匹配,匈牙利算法)
图G的顶点覆盖是一个顶点集合V,使得G中的每一条边都接触V中的至少一个顶点。我们称集合V覆盖了G的边。最小顶点覆盖是用最少的顶点来覆盖所有的边。顶点覆盖数是最小顶点覆盖的大小。
二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i ∈A,j ∈ B),则称图G为一个二分图。
无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。
匈牙利算法:它是一种用增广路径求二分图最大匹配的算法。

定理总结
int find(int cur)  //判断增广路是否存在
{  
    int i, k;  
    for(i = 0; i < map[cur].size(); i++)  
    {  
        k = map[cur][i];  
        if(!flag[k])  
        {  
            flag[k] = true;  
            if(pre[k] == -1 || find(pre[k]))  
            {  
                pre[k] = cur;  
                return 1;  
            }  
        }  
    }  
    return 0;  
} 
for(i = 0; i < n; i++)  
        {  
            memset(flag, false, sizeof(flag));  
            sum += find(i);  
        } 
View Code

sum就是最大匹配值。
柯尼希定理是这样一个定理:二分图最小点覆盖的点数=最大匹配数。

poj 3041;poj1422,2239,1422,1325,1719,2594,2195,2446,1904,3342,3216,3020

一个PXP的有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,
且任何一个顶点有且只有一条路径与之关联;(如果把这些路径中的每条路径从它的起始点走到它的终点,
那么恰好可以经过图中的每个顶点一次且仅一次);如果不考虑图中存在回路,那么每条路径就是一个弱连通子集

最小路径覆盖的边数=顶点数n-最大匹配数

最大独立集:在二分图G中,点集合M,M中的各个点都不相连,则称M为G的独立集。M中点个数最多的称为最大独立集

最大独立集=最小路径覆盖=n-最大匹配数

例:(1,3),(3,4),(2,3),对于无向图,可以得到两种二分图:

1.(1-3,4-3,2-3),求得最大匹配为m=1,即为最小顶点覆盖数,最大独立集=n-m

2.(1-3,3-1,4-3,3-4,2-3,3-2),求得最大匹配m=2,即为最小顶点覆盖数*2,最大独立集=n-m/2

有向图:

(1-3,2-3,3-4),最大匹配为m=2,最小路径覆盖=n-m;

皮克定理:
皮克定理是一个计算点阵中顶点在格点上的多边形面积公式,该公式可以表示为2S=2a+b-2,
其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积。


无名定理(分数小数互化,判断是否是有限小数或无限循环小数):一个分数如果它的分母是10^n(n是含零自然数),就可以直接写成整数或有限小数;
而一个有限小数化成分数,第一步就是将其分母写成10^n。如果一个分数无法将其分母写成10^n,那就无法写出其有限小数的形式。
这样,当一个分数经过约分,化成最简分数后,如果分母质因数分解式是:2^m*5^n(m、n是含零自然数)的形式,当m=n时,
那分母就是10^n了;当m>n时,分子分母同乘以5^(m-n),分母就是10^m了;当m<n时,分子分母同乘以2^(n-m),分母就是10^n了。
反之,当一个最简分数的分母,质因数分解后含有2和5以外的素数,这样分母就无法化成10^n了。 所以,要能看出一个分数是有限小数还是无限循环小数,
只要将其化成最简分数后,对分母进行质因数分解即可判断。如果质因数分解式中仅仅含有素数2或5,则将其化成小数,就是有限小数。如果质因数分解式中,
还含有2和5以外的其他素数,则将其化成小数,就是无限循环小数。

齐肯多夫定理:任何正整数都可以表示成若干个不连续的的斐波那契数(不包括第一个斐波那契数)之和。
这种和式称为齐肯多夫表述法。对于任何正整数,其齐肯多夫表述法都可以由贪心算法(即每次选出最大可能的斐波那契数)得到。


中国剩余定理(CRTCRT)
x=a1modm1x=a1modm1
x=a2modm2x=a2modm2

x=anmodmnx=anmodmn
假设整数m1,m2,...,mnm1,m2,...,mn互质,则对于任意a1,a2,...,ana1,a2,...,an,方程组有解
设M=m1?m2?...?mn,Mi=M/mi设M=m1?m2?...?mn,Mi=M/mi
设Ti=M?1imodmi设Ti=Mi?1modmi
则 x=a1t1M1+a2t2M2+...antnMn+kM

上一篇:python3.8+PySimpleGUI+进度条代码大全


下一篇:51 nod1067 Bash游戏 V2(sg函数打表)