同余和GCD

title: 同余和GCD
date: 2019-07-26 16:14:56
tags: 数论

一、模运算

a除以m的余数 r,r=a mod m=a%m

0≤r≤m-1​,一定存在 a=km+r,k=⌊a/m⌋

a%m的正负由被除数a决定,与m无关,eg. 7%4=3,-7%4=-3

二、同余

  1. 同余

    (1) 给定一 个正整数 m和两个整数 a和b,如果 ((a-b)mod m)=0 ,则称 a和b模m同余,记为a≡b(mod m)

    (2) ((a-b)mod m)=0 当且仅当存在整数k,a=b+km

    ​ eg. -7≡-3≡1≡5≡9(mod 4) -5≡-1≡3≡7≡11(mod 4)

  2. 同余类

    整数被正整数 m除后,余数有m种情形:0、1、2、…、m-1,他们彼此之间余数不同

    模m是否同余对整数集进行分类,可以将整数集分成m个两两不相交的子集

    我们把所有模m同余的整数构成的一个集合,叫做模m的一个同余类(剩余类)

    整数集合根据对 模 m的同余关系 ,可以构造整数集合的一个划分

    对给定的模 m运算,整数的同余关系是一个等价关系

    集合A中元素间的关系"~"是等价关系,当其满足三个条件:

    1.自反性:对于任意a∈A,都有a~a

    2.对称性:对于a,b∈A,若ab,则有ba

    3.传递性:对于a,b,c∈A,若ab,bc,则有a~c

  3. 完全剩余系、简化剩余系

    完全剩余系:对于正整数m,有 r 0 , r 1 , r 2 , . . . , r m − 1 r_0,r_1,r_2,...,r_{m-1} r0,r1,r2,...,rm1个同余类,且两两模m不同余,这些同余类所组成的集合叫做模m的完全剩余系

    简化剩余系:对于模m的完全剩余系,从中选出与m互素 (gcd(r,m)==1咯)的同余类元素,且这些元素模m两两不同余,组成模m的一个简化剩余系

    简化剩余系中同余类的个数为欧拉函数φ(m)

    简化剩余系关于模m乘法封闭

    证明:若有a,b(0≤a,b<m),且GCD(a,m)=GCD(b,m)=1,因为a,b与m都没有相同的因子,所以a * b也没有相同的因子,所以a * b与m互质,所以a * b mod m也属于m的简化剩余系

  4. 带模运算的性质

  5. 同余的性质

三、快速幂

用于快速计算 a b a^b ab ,时间复杂度为 O ( l o g 2   b ) O(log_2\ b) O(log2 b)

用于a和b比较大的情况,常用的快速幂是 带模快速幂

eg.要求 3 15 3^{15} 315:

15 = ( 1111 ) 2 15=(1111)_2 15=(1111)2

3 1 = 3 , 3 2 = 9 , 3 4 = 81 , 3 8 = 6561 3^1=3,3^2=9,3^4=81,3^8=6561 31=3,32=9,34=81,38=6561

3 15 = 3 1 ∗ 3 2 ∗ 3 4 ∗ 3 8 3^{15}=3^1 * 3^2 * 3^4 * 3^8 315=31323438

对于给定的整数b,其二进制数长度 l o g 2   b log_2\ b log2 b

int quick_pow(int a,int b,int p)
{
	int res=1%p;//一定要注意要这样初始化
	while(b)
	{
		if(b&1)
		res=res*1ll*a%p;
		a=a*1ll*a%p;
		b>>=1;
	 } 
	 return res;
 } 

四、等比数列求和

S n = a + a 2 + . . . + a n S_n=a+a^2+...+a^n Sn=a+a2+...+an,求 S n %   p S_n \%\ p Sn% p

直接用公式计算可能会溢出,应该用二分法进行递归求解

(1)如果n为偶数

S n = a + a 2 + . . . + a n 2 + a n 2 + 1 + a n 2 + 2 + . . . + a n S_n=a+a^2+...+a^{\frac{n}{2}}+a^{\frac{n}{2}+1}+a^{\frac{n}{2}+2}+...+a^n Sn=a+a2+...+a2n+a2n+1+a2n+2+...+an

= ( a + a 2 + . . . + a n 2 ) + a n 2 ( a + a 2 + . . . + a n 2 ) =\left(a+a^2+...+a^{\frac{n}{2}} \right) +a^{\frac{n}{2}}\left(a+a^2+...+a^{\frac{n}{2}} \right) =(a+a2+...+a2n)+a2n(a+a2+...+a2n)
= S n 2 + a n 2 S n 2 =S_{\frac{n}{2}}+a^{\frac{n}{2}}S_{\frac{n}{2}} =S2n+a2nS2n

= ( 1 + a n 2 ) S n 2 =\left( 1+a^{\frac{n}{2}}\right) S_{\frac{n}{2}} =(1+a2n)S2n

(2)如果n为奇数

S n = a + a 2 + . . . + a n − 1 2 + a n − 1 2 + 1 + a n − 1 2 + 2 + . . . + a n − 1 + a n S_n=a+a^2+...+a^{\frac{n-1}{2}}+a^{\frac{n-1}{2}+1}+a^{\frac{n-1}{2}+2}+...+a^{n-1}+a^n Sn=a+a2+...+a2n1+a2n1+1+a2n1+2+...+an1+an

= S n − 1 2 + a n − 1 2 S n − 1 2 + a n =S_{\frac{n-1}{2}}+a^{\frac{n-1}{2}}S_{\frac{n-1}{2}}+a^n =S2n1+a2n1S2n1+an

= ( 1 + a n − 1 2 ) S n − 1 2 + a n =\left( 1+a^{\frac{n-1}{2}}\right) S_{\frac{n-1}{2}}+a^n =(1+a2n1)S2n1+an

五、最大公因数(Greatest Common Divisor,GCD)

两个或多个整数共有约数中最大的一个

欧几里得算法(辗转相除法)

如果 d和r是a除以 b的商和余数,那么 a和b的最大公因数等于 b和r的最大公因数,即GCD(a,b)=GCD(b,a%b)

非零数和0的最大公因式为那个非零数,eg. 5 和 0的最大公因数为5

证明:

  • 两条线段长分别可表示 252和 105,则其中每一小分段长代表最大公约数21。如动画所示,只要辗转地从大数中减去小数,直到其中一段的长度为0,此时剩下的一条线段的长度就是252和105的最大公因数。
  • 最初的绿色矩形的长和宽分别是a = 1071、b = 462,从中不断铺上462×462的正方形直到剩下部分面积是462×147;然后再铺上147×147的正方形直至剩下21×147的面积;最后,铺上21×21的正方形时,绿色部分就没有了。即21是1071和462的最大公约数。
    在这里插入图片描述
//递归版
int gcd(int a,int b)
{
	return b==0?a:gcd(b,a%b);
}
//非递归版
int gcd(int a,int b)
{
	while(b>0)
	{
		int r=a%b;
		a=b;
		b=r;
	}
	return a;
}

注意:

GCD递归层数最多4.785 lg N+1.6723,N=max(a,b),所以一般不会栈溢出

lg是以10为底的对数函数

值得一提的是,GCD函数的递归层数最多的是 G C D ( F n , F n − 1 ) GCD(F_n,F_{n-1}) GCD(Fn,Fn1) F n F_n Fn为Fibonacci数

???为啥,我也不造啊,书上就这么写的

如果GCD(a,b)=1,则两个整数a,b互质

证明 GCD(a,b)=GCD(b,a%b)

(1)证明GCD(a,b)是b,a%b的一个公约数

设GCD(a,b)=d,则 a=k1 *d,b=k2 *d

a%b=a-k * b → a%b=k1 * d - k * k2 *d →a%b=(k1-k * k2)*d

所以a%b和 b都有约数d,所以是“一个公约数”

(2)证明GCD(a,b)是b,a%b的最大公约数

a%b=(k1-k * k2)*d

b=k2 * d

即要证明**(k1-k * k2) 和 k2互质**

反证法:设两者不互质,且含有最大公因子t(t>1),p,q互质

(k1-k * k2) = q * t →k1=q * t+k * k2

k2=p * t

所以有:

a=(q * t+k * k2) * d = (q * t+k * p * t) * d=(q+kp)*dt

b=p * dt

则GCD(a,b)=t * d,与上面假设矛盾,假设不成立,所以两者互质是最大公约数

优化版GCD

int gcd(int x,int y)
{
    if(x<y) 
	return gcd(y,x);  // x>y
    if(y==0) 
	return x;  // if y=0, x is GCD 
    else
    {
         if(x%2==0)
         {                 
           if(y%2==0)  //x,y both even
               return 2*gcd(x>>1,y>>1);    
           else      // x is even, y is odd
               return gcd(x>>1,y);  
         }
         else 
         {
           if(y%2==0)  // x is  odd,  y is even
               return gcd(x,y>>1);
           else       // x, y both odd
               return gcd(y,x-y); 
         }
    }
}

当然,我们还有二进制GCD,计算机取模运算的效率是很低的,而对于位运算却可以是高效的。

面对大整数取模运算,其速度是非常慢的

最大公约数有几个性质:

  1. GCD(a,b) = GCD(a-b,b) 其中a>b

  2. GCD(a,b) =k * GCD(a1,b1) 其中a=k * a1,b=k * b1 (a,b不互质的时候,把公因数提出来)

  3. 如果a=p * a1,p是素数,且b和p互质,那么 GCD(a,b) = GCD(p * a1,b) = GCD(a1,b)

  4. 取p=2,有以下性质:

    (1)如果 a,b都是偶数,那么 GCD(a , b) = GCD(a>>1, b>>1) * 2

    (2)如果 a是偶数, b是奇数,那么 GCD(a , b) = GCD(a>>1, b)

    (3)如果 a是奇数, b是偶数,那么 GCD(a , b) = GCD( (a-b)>>1, b)

int GCD(int x,int y){
    int i=0,j=0;
    if(x==0) 
        return y;//if和for一定不能反,要么会炸
    if(y==0) 
        return x;//一个没用了就返回另一个
    for(i;0==(x&1);i++) 
        x>>=1;//化简为n*(m^2)形式
    for(j;0==(y&1);j++) 
        y>>=1;//化简为a*(b^2)形式
    if(i>j) 
        i=j;//去最大 公 因数,当然是你有我有的了
    while(1){
        if(x<y) 
            x^=y,y^=x,x^=y;//二进制交换,非常高级
        if(0==(x-=y)) 
            return y<<i;//那么就把以前的次幂乘上去,辗转减操作
        while(0==(x&1)) 
            x>>=1;//x减了y以后可能还是成为a*(b^2)形式,要继续筛去
    }
}

六、最小公倍数(Least Common Multiple, LCM)

两个或多整数公有的倍数叫做它们的公倍数,其中除 0以外最小的一个公倍数就叫做这几个整数的最小公倍数

LCM(a,b)的计算,给定两个整数a,b

a = p 1 e 1 p 2 e 2 . . . p r e r , b = p 1 f 1 p 2 f 2 . . . p r f r a=p_{1}^{e_1}p_{2}^{e_2}...p_{r}^{e_r},b=p_{1}^{f_1}p_{2}^{f_2}...p_{r}^{f_r} a=p1e1p2e2...prer,b=p1f1p2f2...prfr

那么

G C D ( a , b ) = p 1 min ⁡ ( e 1 , f 1 ) p 2 min ⁡ ( e 2 , f 2 ) . . . p r min ⁡ ( e r , f r ) GCD( a,b ) =p_{1}^{\min (e_1,f_1 )}p_{2}^{\min ( e_2,f_2 )}...p_{r}^{\min (e_r,f_r )} GCD(a,b)=p1min(e1,f1)p2min(e2,f2)...prmin(er,fr)

L C M ( a , b ) = p 1 max ⁡ ( e 1 , f 1 ) p 2 max ⁡ ( e 2 , f 2 ) . . . p r max ⁡ ( e r , f r ) LCM( a,b ) =p_{1}^{\max (e_1,f_1 )}p_{2}^{\max ( e_2,f_2 )}...p_{r}^{\max (e_r,f_r )} LCM(a,b)=p1max(e1,f1)p2max(e2,f2)...prmax(er,fr)

明显有:GCD(a,b) * LCM(a,b)= a * b

即:LCM(a,b)=a * b / GCD(a,b)

七、贝祖定理

贝祖定理:对于非零整数a,b,有 d = g c d   ( a , b ) d=gcd\ (a,b) d=gcd (a,b),那么就存在整数 x和 y,使得 a x + b y = d ax+by=d ax+by=d

证明:对于非零整数a,b,a%b=r1,r1严格小于|b|,并且gcd(a,b)=gd(r1,b),然后我们重复的进行下去

a = b x 1 + r 1 , 0 < r 1 < ∣ b ∣ a=bx_1+r_1,0<r_1<|b| a=bx1+r1,0<r1<b

b = r 1 x 2 + r 2 , 0 < r 2 < r 1 b=r_1x_2+r_2,0<r_2<r_1 b=r1x2+r2,0<r2<r1

r n − 1 = r n x n + 1 + r n + 1 , 0 < r n + 1 < r n r_{n-1}=r_nx_{n+1}+r_{n+1},0<r_{n+1}<r_n rn1=rnxn+1+rn+1,0<rn+1<rn

r n = r n + 1 x n + 2 r_n=r_{n+1}x_{n+2} rn=rn+1xn+2(此时余数为0了)

r n + 1 r_{n+1} rn+1是除法过程最后一个非零数余数,代入上式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8JZJ2CJB-1582040933969)(http://pvyyuu4id.bkt.clouddn.com/41.png)]

贝祖定理扩展:如果 a x + b y = n ax+by=n ax+by=n 有解,充要条件n 是gcd(a,b)的倍数

证明:

八、扩展欧几里得算法

给出a,b,去计算 a x + b y = g c d   ( a , b ) ax+by=gcd\ (a,b) ax+by=gcd (a,b)的算法即为扩展欧几里得算法

边界情况:b = 0,a = gcd (a,b)

a * 1+b * 0=gcd (a,b) → x=1,y=0

递推情况:从下一层反推回当前层

假定下一层已求解: b ∗ x 1 + ( a % b ) ∗ y 1 = g c d b * x_1+(a \%b) * y_1=gcd bx1+(a%b)y1=gcd

a % b = a − ( a / b ) ∗ b a\%b=a-(a/b) * b a%b=a(a/b)b 代入上式:

b ∗ x 1 + ( a − ( a / b ) ∗ b ) ∗ y 1 = g c d b * x_1+(a-(a/b) * b) * y_1=gcd bx1+(a(a/b)b)y1=gcd

b ∗ x 1 + a ∗ y 1 − ( a / b ) ∗ b ∗ y 1 = a ∗ y 1 + b ∗ ( x 1 − ( a / b ) ∗ y 1 ) = g c d b* x_1+a* y_1-(a/b)* b* y_1=a* y_1+b* (x_1-(a/b)* y_1)=gcd bx1+ay1(a/b)by1=ay1+b(x1(a/b)y1)=gcd

x = y 1 ,   y = x 1 − ( a / b ) ∗ y 1 x=y_1,\ y=x_1-(a/b) *y_1 x=y1, y=x1(a/b)y1

注意:(关于通解)方程ax+by=gcd(a,b)的解不唯一

x 0 , y 0 x_0,y_0 x0,y0是一组解,则 x 0 + t ∗ b / g c d ( a , b ) x_0+t* b/gcd(a,b) x0+tb/gcd(a,b) y 0 − t ∗ a / g c d ( a , b ) y_0-t* a/gcd(a,b) y0ta/gcd(a,b)也是解,t为任意整数

int exgcd(int a,int b,int &x,int &y)
{
	if(b==0)
	{
		x=1,y=0;
		return a;
	}
	int r=exgcd(b,a%b,x,y);
	int temp=x;
	x=y;
	y=temp-a/b*y;
	
	return r;//r=gcd(a,b)
}
void exgcd(int a,int b,int &d,int &x,int &y)
{
	if(b==0)
	{
		d=a;
		x=1;
		y=0;
	}
	else
	{
		exgcd(b,a%b,d,y,x);
		y-=x*(a/b);
	}
}

九、一元线性同余方程

  1. 求解方程ax+by=c

    先判定是否有解:ax+by=c,有解的充要条件是 gcd(a,b)|c

    如有解,方程有 gcd(a,b) 个模b不同余的解

    设d=gcd(a,b)

    使用扩展欧几里得算法得到 ax+by=d 的一组特解 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)

    k = c d k=\frac{c}{d} k=dc,则ax+by=c的解集是 x = k x 0 + b d t x=kx_0+\frac{b}{d}t x=kx0+dbt y = k y 0 − a d t y=ky_0-\frac{a}{d}t y=ky0dat (t为任意整数)

    其中,x 模b不同余的解共有 d个:

    x = k x 0 + b d t x=kx_0+\frac{b}{d}t x=kx0+dbt (t=0,1,…,d-1)

    s = b d s=\frac{b}{d} s=db,x的最小非负解: ( ( k x 1 ) %    s + s )   %   s ((kx_1)\%\ \ s+s)\ \%\ s ((kx1)%  s+s) % s

  2. 模逆(逆元)

    在模n运算下,整数a和x互为乘法逆元

    对于整数a,n,如果有gcd(a,n)=1,那么就存在一个整数x使得 ax=1(mod n)

    由贝祖定理知,存在x,y使得 ax+ny=gcd(a,n)=1,即 1≡ax+ny≡ax (mod n)

    用扩展欧几里得算法求解方程:ax+ny=1

    注意:当a和n不互质时,模逆无解

    当n时素数时,模逆也可以用费马小定理求: x = a n − 2 x=a^{n-2} x=an2

    逆元的重要应用:求除法的模 (a/b) mod m

    直接计算是求a/b,然后取模,但是如果b是大整数,做除法后再取模会损失精度,此时,需要避开除法计算

    设b的逆元是k,将除法的模转换为带模乘法:

    ( a b )   m o d   m = ( ( a b )   m o d   m ) ∗ ( ( b ∗ k )   m o d   m ) = ( a b ∗ b ∗ k )   m o d   m = ( a ∗ k )   m o d   m (\frac{a}{b} )\ mod\ m=((\frac{a}{b})\ mod\ m) * ((b * k)\ mod\ m)=(\frac{a}{b} * b * k)\ mod\ m=(a * k)\ mod\ m (ba) mod m=((ba) mod m)((bk) mod m)=(babk) mod m=(ak) mod m

十、中国剩余定理

设k组数 ( a i , n i ) (a_i,n_i) (ai,ni),其中, n i n_i ni 两两互素,要找到最小的正整数x,满足方程组
x ≡ a i   ( m o d   n i ) x≡a_i \ (mod\ n_i) xai (mod ni),(i=1,2,…k)

算法步骤

n = n 1 n 2 n 3 . . . n k , m i = n n i n=n_1n_2n_3...n_k,m_i=\frac{n}{n_i} n=n1n2n3...nk,mi=nin

显然 g c d ( m i , n i ) = 1 gcd(m_i,n_i)=1 gcd(mi,ni)=1,采用扩展欧几里得算法计算出 x i x_i xi 满足 m i x i ≡ 1   ( m o d   n i ) m_ix_i≡1\ (mod\ n_i) mixi1 (mod ni)

方程组的解 x = ( a 1 x 1 m 1 + a 2 x 2 m 2 + . . . + a k x k m k )   m o d   n x=(a_1x_1m_1+a_2x_2m_2+...+a_kx_km_k)\ mod\ n x=(a1x1m1+a2x2m2+...+akxkmk) mod n

方程组的任意两个解 模n同余,因此x就是最小的解

证明 x = a 1 x 1 m 1 + a 2 x 2 m 2 + . . . + a k x k m k x=a_1x_1m_1+a_2x_2m_2+...+a_kx_km_k x=a1x1m1+a2x2m2+...+akxkmk 是解

x   m o d   n i = ( a 1 x 1 m 1 + a 2 x 2 m 2 + . . . + a k x k m k )   m o d   n i = a i x i m i   m o d   n i = a i   m o d   n i x\ mod\ n_i=(a_1x_1m_1+a_2x_2m_2+...+a_kx_km_k)\ mod\ n_i=a_ix_im_i\ mod\ n_i=a_i\ mod\ n_i x mod ni=(a1x1m1+a2x2m2+...+akxkmk) mod ni=aiximi mod ni=ai mod ni

证明 任意两个解 模n同余,即 x 1 ≡ x 0   ( m o d   n ) x_1≡x_0\ (mod\ n) x1x0 (mod n)

设有两个解 x 1 , x 0 x_1,x_0 x1,x0 则:

x 1 ≡ a i ( m o d   n i )   ( i = 1 , 2 , . . . k ) x_1≡a_i(mod\ n_i)\ (i=1,2,...k) x1ai(mod ni) (i=1,2,...k)

x 0 ≡ a i ( m o d   n i )   ( i = 1 , 2 , . . . k ) x_0≡a_i(mod\ n_i)\ (i=1,2,...k) x0ai(mod ni) (i=1,2,...k)

n i ∣ ( x 1 − x 0 )   ( i = 1 , 2 , . . . k ) n_i|(x_1-x_0)\ (i=1,2,...k) ni(x1x0) (i=1,2,...k)

n i ∣ ( x 1 − x 0 ) n_i|(x_1-x_0) ni(x1x0) n i n_i ni 两两互质→ x 1 ≡ x 0   ( m o d   n ) x_1≡x_0\ (mod\ n) x1x0 (mod n)

扩展中国剩余定理

n i n_i ni 不一定两两互素

分析

x ≡ a 1 ( m o d   n 1 ) x≡a_1(mod\ n_1) xa1(mod n1)

x ≡ a 2 ( m o d   n 2 ) x≡a_2(mod\ n_2) xa2(mod n2)

x + u ∗ n 1 = a 1 x+u * n_1=a_1 x+un1=a1 x + v ∗ n 2 = a 2 x+v * n_2=a_2 x+vn2=a2

n 1 ∗ u + n 2 ∗ v = ( a 1 − a 2 ) n_1 * u+n_2 * v=(a_1-a_2) n1u+n2v=(a1a2)

此关于u,v的方程当且仅当 g c d ( n 1 , n 2 ) ∣ ( a 1 − a 2 ) gcd(n_1,n_2)|(a_1-a_2) gcd(n1,n2)(a1a2) 时有解

用扩展欧几里得算法求解 n 1 ∗ u + n 2 ∗ v = ( a 1 − a 2 ) n_1 * u+n_2 * v=(a_1-a_2) n1u+n2v=(a1a2)

一组解为 ( u 0 , v 0 ) (u_0,v_0) (u0,v0) ,此方程解集为:(t为任意整数)

u = u 0 + t ∗ n 2 g c d ( n 1 , n 2 ) u=u_0+t * \frac{n_2}{gcd(n1,n2)} u=u0+tgcd(n1,n2)n2

v = v 0 − t ∗ n 1 g c d ( n 1 , n 2 ) v=v_0-t * \frac{n_1}{gcd(n1,n2)} v=v0tgcd(n1,n2)n1

x + u ∗ n 1 = a 1 x+ u * n_1=a_1 x+un1=a1 x = a 1 − u 0 ∗ n 1 − t ∗ n 1 ∗ n 2 g c d ( n 1 , n 2 ) x=a_1-u_0 * n_1-\frac{t * n_1 * n_2}{gcd(n_1,n_2)} x=a1u0n1gcd(n1,n2)tn1n2

即: x = a 1 − u 0 ∗ n 1 − t ∗ l c m ( n 1 , n 2 ) x=a_1-u_0 * n_1-t * lcm(n_1,n_2) x=a1u0n1tlcm(n1,n2),t为任意整数

即: x ≡ a 1 − u 0 ∗ n 1 ( m o d   l c m ( n 1 , n 2 ) ) x≡a_1-u_0 * n_1(mod\ lcm(n_1,n_2)) xa1u0n1(mod lcm(n1,n2))

以上两个过程等价于

两个方程 x ≡ a 1 ( m o d   n 1 ) x≡a_1(mod\ n_1) xa1(mod n1) x ≡ a 2 ( m o d   n 2 ) x≡a_2(mod\ n_2) xa2(mod n2)

被合并为: x ≡ a 1 − u 0 ∗ n 1 ( m o d   l c m ( n 1 , n 2 ) ) x≡a_1-u_0 * n_1(mod\ lcm(n_1,n_2)) xa1u0n1(mod lcm(n1,n2))

继续合并下去,不断将两个方程并为一个,最后就能求得x的解

十一、高次同余方程

十二、习题

余数之和 BZOJ-1257

Matrix Power Series POJ-3233

LCM Walk HDU-5584

A sequence of numbers HDU-2817(快速幂)

Hankson的趣味题 NOIP-2009 (GCD)

Astronomy POJ-3101 (LCM+大数运算)

Contemplation! Algebra UVA-10655(矩阵快速幂)

C Looooops 百练2115

Biorhythms POJ-1006

瞬间移动 HDU-5698

The Balance POJ-2142 (扩展欧几里得)

One Person Game ZOJ-3593 (扩展欧几里得)

Beautiful Trees Cutting (等比数列+模逆)

X问题 HDU-1573 (中国剩余定理)

Mod Tree HDU-2815

Strange way to exp. int. POJ-2891 (扩展中国剩余定理)

计算器 洛谷-P2485 (BSGS)

十二、相关链接

贝祖定理

扩展欧几里得详解

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值