ACM常用公式

本文介绍了数论中的关键概念和公式,包括排列组合的奇偶性判断、欧拉降幂、费马小定理等。此外,还探讨了连续区间内逆元的线性递推方法、自然数幂和的求解技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

排列组合

  1. 组合数奇偶性判断C(n,m)(nC(n,m)为奇数⇔(n & m)==mm)==m
  2. 第二类斯特林数奇偶性判断
    {nk}(nk+12k12)mod2{nk}≡(n−⌈k+12⌉⌊k−12⌋)mod2

基础数论

公式
  1. 欧拉降幂(扩展欧拉定理)
    abab%ϕ(p)           gcd(a,p)=1ab                   gcd(a,p)1,b<ϕ(p)ab%ϕ(p)+ϕ(p)    gcd(a,p)1,bϕ(p)       (mod p)ab≡{ab%ϕ(p)           gcd(a,p)=1ab                   gcd(a,p)≠1,b<ϕ(p)ab%ϕ(p)+ϕ(p)    gcd(a,p)≠1,b≥ϕ(p)       (mod p)
  2. 费马小定理
    pp是质数且gcd(a, p)=1,则
    ap11 (modp)ap−1≡1 (modp)
  3. 连续区间内逆元的线性递推
    对于求解1p1−p之间的所有数关于奇质数pp的逆元,存在线性递推关系如下:
    inv[i]=(pp/i)inv[p%i]%p
  4. 费马大定理
    当整数n>2n>2时,关于x,y,zx,y,z的方程 xn+yn=znxn+yn=zn 没有正整数解
  5. 构造勾股数
    已知正整数a,b,ca,b,c满足a2+b2=c2a2+b2=c2,并且aa是已知的,求解方程的一组正整数解
    1. a为大于11的奇数2n+1时,b=2n2+2n, c=2n2+2n+1b=2∗n2+2n, c=2∗n2+2n+1
    2. aa为大于2的偶数2n2n时, b=n21, c=n2+1b=n2−1, c=n2+1
    证明
    线性求解1p1−p的逆元

    对于求解1p1−p的所有数关于奇质数pp的逆元,存在递推关系式如下:

    inv[i]=(MM/i)inv[M%i]%M

    证明
    t=M/i,k=M%it=M/i,k=M%i,那么
    ti+k0(modM)⇒t∗i+k≡0(modM)
    tik(modM)⇒−t∗i≡k(modM)
    对上式两边同时除以iki∗k
    得到tinv[k]inv[i](modM)−t∗inv[k]≡inv[i](modM)
    再把ttk替换掉,最终得到inv[i]=(MM/i)inv[M%i]%Minv[i]=(M−M/i)∗inv[M%i]%M
    初始化inv[1]=1inv[1]=1,就可以通过递推线性求出1p1−p模奇素数pp的所有逆元了。

    自然数幂和
    1. 通过递推公式求解
      S(n,k)=i=1nik,可以得到如下递归式

      S(n,k)=1k+1[(n+1)k+1(C2k+1S(n,k1)+C3k+1S(n,k2)++Ckk+1S(n,1)+n+1)]S(n,k)=1k+1[(n+1)k+1−(Ck+12S(n,k−1)+Ck+13S(n,k−2)+⋯+Ck+1kS(n,1)+n+1)]
      证明
      由二项式定理,可以得到
      (n+1)k+1nk=C1k+1nk+C2k+1nk1++Ckk+1n+1(n+1)k+1−nk=Ck+11nk+Ck+12nk−1+⋯+Ck+1kn+1
      ,令n=1,2,3,n=1,2,3,…,累加后可得
      (n+1)k+11=C1k+1i=1nik+C2k+1i=1nik1++Ckk+1i=1ni+n(n+1)k+1−1=Ck+11∑i=1nik+Ck+12∑i=1nik−1+⋯+Ck+1k∑i=1ni+n
      进一步得到
      nk=1k+1[(n+1)k+1(C2k+1i=1nik1+C3k+1i=1nik2+Ckk+1i=1ni+n+1)]nk=1k+1[(n+1)k+1−(Ck+12∑i=1nik−1+Ck+13∑i=1nik−2⋯+Ck+1k∑i=1ni+n+1)]
      S(n,k)=ni=1ikS(n,k)=∑i=1nik,可以得到如下递归式
      S(n,k)=1k+1[(n+1)k+1(C2k+1S(n,k1)+C3k+1S(n,k2)++Ckk+1S(n,1)+n+1)]S(n,k)=1k+1[(n+1)k+1−(Ck+12S(n,k−1)+Ck+13S(n,k−2)+⋯+Ck+1kS(n,1)+n+1)]
      递归出口是k==1k==1S(n,k)=n(n+1)2S(n,k)=n(n+1)2
      在递归的过程中进行记忆化,可以在O(k2)O(k2)的时间复杂度内求解自然数和
      • 通过伯努利数求解
        通过伯努利数以及必要的预处理,可以在线性时间复杂度内求解出自然数幂和,公式描述如下:
        i=1nik=1k+1i=1k+1Cik+1Bki+1(n+1)i∑i=1nik=1k+1∑i=1k+1Ck+1iBk−i+1(n+1)i

        求伯努利数的方法:
        伯努利数满足条件B0=1B0=1,且有nk=1Ckn+1=0∑k=1nCn+1k=0,那么继续得到
        Bn=1n+1(C0n+1B0+C1n+1B1++Cn1n+1Bn1)Bn=−1n+1(Cn+10B0+Cn+11B1+⋯+Cn+1n−1Bn−1)
        这就是伯努利数的递推公式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值