国庆集训数论总结

Posted santiego

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国庆集训数论总结相关的知识,希望对你有一定的参考价值。

扩展欧几里得

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\times a+k=s_2\times b+p\)

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

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

\(x=s_1\times a + k\)

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

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

组合数

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

\(C_n^m=\fracA_n^mm!\)因为取出的\(m\)个数共有\(m!\)种排列

逆元

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

欧拉函数

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

对于质数\(p\)

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

  • \(\phi(p^k)=(p-1)\times p^k-1\)

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

推论:\(x\equiv y(mod\;\phi(n))\),则\(a^x\equiv a^y(mod\; n)\)

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

\(a^b^cmod\;n\),利用推论将\(b^cmod\;\phi(n)\)再继续算

线性筛

\(\textMiller_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)\times f(b)=f(a\times b)\)

\(x\)分解质因数\(x=p_1^k_1\times p_2^k_2\cdots p_n^k_n\)

\(f(x)=f(p_1^k_1)\times 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|xf(d)\times g(x/d)\)

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

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

以上是关于国庆集训数论总结的主要内容,如果未能解决你的问题,请参考以下文章

10.2 正睿国庆集训测试1

9月半集训总结 & 10月集训规划

浴谷国庆集训 对拍

蒟蒻的2018停课集训总结

2017暑假集训前总结和规划

[暑假集训--数论]poj2657 Comfort