• 国庆集训数论总结


    扩展欧几里得

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

    合并同余方程组

    [x;mod;a=k \ x;mod;b=p ]

    (x=s_1 imes a+k=s_2 imes b+p)

    移项得(s_1 imes a-s_2 imes b=p-k)

    此时可将(s_1,s_2)看做求解方程(ax+by=c)(x,y),此时用扩展欧几里得求解通解:

    (x=s_1 imes a + k)

    (x=x_0 imes a+k+K imes [a,b])

    (x\%[a,b]=x_0 imes a+k)

    组合数

    (C_n^m=C_{n-1}^{m-1}+C_{n-1}^{m})杨辉三角组合数递推式可以理解为一个DP转移

    (C_n^m=frac{A_n^m}{m!})因为取出的(m)个数共有(m!)种排列

    逆元

    求组合数通项公式时可用逆元前缀积(C_n^m=fac[n] imes preinv[m] imes preinv[n-m])

    欧拉函数

    (phi(i))(1)(i)中有多少数与(i)互质

    对于质数(p)

    • (phi(p)=p-1)小于自己的都互质

    • (phi(p^k)=(p-1) imes p^{k-1})

    欧拉定理(a^{phi(n)}equiv 1(mod;n))

    推论:(xequiv y(mod;phi(n))),则(a^xequiv a^y(mod; n))

    (a imes a^{phi(n)-1}equiv 1(mod;n))所以当(n)为质数时,(a)的逆元为(a^{n-2})(同费马小定理)

    (a^{b^{c}}mod;n),利用推论将(b^cmod;phi(n))再继续算

    线性筛

    ( ext{Miller_Rabin})算法(O(log_n))判断是否为质数

    埃氏筛复杂度(n+n/2+n/3+cdots+n/n=O(nlog_n))

    线性筛

    for(register int i=2;i<=n;++i){
        if(!notp[i]) p[cnt++]=i;
        for(int j=0;j<cnt;++j){
            if(i*p[j]>n) break;
            notp[i*p[j]]=1;
            if(i%p[j]==0) break; // 保证线性筛,每个数只会被其最小质因子筛掉
        }
    }
    

    另一种可同时求出最小质因数(MinP[])的版本

    for(int i=2;i<=n;++i){
        if(!MinP[i]) MinP[i]=i,prime[++tot]=i;
        for(int j=1;j<=tot;++j){
            if(i*prime[j]>n) break;
            MinP[i*prime[j]]=prime[j];
            if(i%prime[j]==0) break;
        }
    }
    

    积性函数

    定义域为(N^+),满足:

    • (f(1)=1)
    • ((a,b)=1),则(f(a) imes f(b)=f(a imes b))

    (x)分解质因数(x=p_1^{k_1} imes p_2^{k_2}cdots p_n^{k_n})

    (f(x)=f(p_1^{k_1}) imes f(p_2^{k_2})cdots f(p_n^{k_n}))

    常见积性函数:

    • (Id(x)=x):单位函数
    • (Id_k(x)=x^k)幂函数
    • (phi)欧拉函数
    • 莫比乌斯函数
    • 单元函数
    • (1(x)=1)
    • (d(x))表示(x)的约数个数(分解质因数后选与不选(k+1)种情况)

    求解

    f[1]=1;
    for(i=2;i<=n;i++){
    	int j=i/MinP[i];
    	if(MinP[j]==MinP[i])w[i]=w[j];
    	else w[i]=j;
    	if(w[i]==1){
    		// i为pk ,直接计算
    	}
    	else f[i]=f[w[i]]*f[i/w[i]];
    }
    

    狄利克卷积

    运算符(*)

    (f*g=h,h(x)=sum_{d|x}f(d) imes g(x/d))

    满足交换律、结合律、加法分配率

    定理:两个积性函数的狄利克雷卷积还是积性函数

  • 相关阅读:
    对拍源码QwQ
    BZOJ-3875: [Ahoi2014&Jsoi2014]骑士游戏(SPFA+DP)
    2017年10月19日23:31:57
    BZOJ-1064: [Noi2008]假面舞会 (综合性图论题)
    BZOJ-1002: [FJOI2007]轮状病毒(打表找规律or递推 + 高精度)
    BZOJ1397 Ural 1486 Equal squares
    BZOJ3417 Poi2013 Tales of seafaring
    BZOJ2286 [Sdoi2011消耗战
    BZOJ1370 [Baltic2003]Gang团伙
    BZOJ2530 [Poi2011]Party
  • 原文地址:https://www.cnblogs.com/santiego/p/11625794.html
Copyright © 2020-2023  润新知