zoukankan      html  css  js  c++  java
  • 关于数论

    质数

    目前了解的筛法

    埃氏筛,时间复杂度(nlogn)(log)是根据调和级数算出来的,Dirichlet 前缀和和这个也有点像。

    线性筛,平时比较常用的筛法,貌似所有的积性函数都可以筛就看自己会不会筛了。

    一些定理

    唯一分解定理,(N=p_1^{c_1}p_2^{c_2}p_3^{c_3}p_k^{c_k}),经常用到。

    费马小定理,(a^{p-1}equiv1 pmod p)(p)为质数。

    欧拉定理,(a^{phi(p)}equiv 1 pmod p)(a,p)互质。

    中国剩余定理(CRT),对于一组同余方程

    [xequiv a_i pmod {m_i} ]

    其中各模数互质,设(M)为各模数乘积,有通解(x=sum a_i imes frac{M}{m_i} imes t),其中(t)(frac{M}{m_i})的逆元

    证明如下:

    对于(frac{M}{m_i} imes t),当模数为(m_i)的时候,该式子为(1),否则为(0),所以(x)满足各个方程。

    卢卡斯定理(Lucas),(C_n^mequiv C_{n/p}^{m/p} imes C_{n\%p}^{m\%p} pmod p)

    一般和CRT一起使用,对于模数可以分解为最高次幂不超过(1)的质数积的时候,先求出每个模数下的答案然后CRT合并即可。

    证明如下:

    首先证明(C_p^iequiv 0 1<=i<=p-1)

    [C_p^i = frac{p!}{i!(p-i)!}=frac{p}ifrac{(p-1)!}{(i-1)!(p-1-i+1)!} ]

    因为(i)是小于(p)的,所以一定存在逆元,于是

    [C_p^iequiv pi^{-1}frac{(p-1)!}{(i-1)!(p-1-i+1)!}=pi^{-1}C_{p-1}^{i-1} ]

    所以(C_p^iequiv 0 1<=i<=p-1)

    于是((x+1)^p=C_p^0x^p+C_p^1x^{p-1}+C_p^2x^{p-2}+C_p^p)

    中间那一大段都是(0)

    所以((x+1)^pequiv x^p+1)

    不妨设(n=ap+b,m=cp+d)

    ((x+1)^n)中第(m+1)项为(C_n^mx^m)

    ((x+1)^n=(x+1)^{ap}(x+1)^bequiv(x^p+1)^{a}(x+1)^b)

    从前边选出(cp),即(C_a^cx^{cp}),从后边选出(d),有(C_b^dx^d)

    所以(C_a^cx^{cp}C_b^dx^d=C_a^cC_b^dx^m)

    比较系数得,(C_n^mequiv C_{n/p}^{m/p} imes C_{n\%p}^{m\%p} pmod p)

    注意如果后边(b<d)的话结果一定为(0),写出原始的式子就明白了。

    扩展卢卡斯定理

    感觉这个跟卢卡斯定理没什么关系,主要思想是把里边所有的(p)拿出来单独考虑,然后它就有逆元了,于是就能正常处理了。

    拉格朗日插值

    对于高次多项式

    [f_x=a+bx+cx^2+dx^3...+x^n ]

    给出(n+1)个值求出它的表达式

    暴力做就是高斯消元,(n^3),但是巨佬感觉太慢了,于是它就提出了一个快速的方法。

    [f_x=sum_i{y_i}prod_{i!=j}frac{x-x_j}{x_i-x_j} ]

    直接把要求的值往里边代就行了,至于为什么,因为它是被构造出来的,所以代入几个值都对于是证毕???

    逆元

    exgcd求逆元

    要求(axequiv1pmod{b})

    可以把它变化成为(ax-by=1)

    因为只求(x),所以变换(y)的系数没关系

    得到(ax+by=1)
    因为当二者互质时一定有解

    所以,(gcd(a,b)=gcd(b,a\%b)=1)

    所以(bx'+a\%by'=1)
    然后得到(ax+by==bx'+(a-lfloorfrac{a}{b} floor b)y')
    又因为求整数解,所以让对应的系数相等即可。

    得到(x=(a-lfloorfrac{a}{b} floor b)y'),(y=x')

    exgcd求方程的其他解

    令特解为(x_0,y_0)

    那么有(ax_0+by_0=ax+by)

    (a(x_0-x)==b(y-y_0))

    (frac{a}{gcd(a,b)}(x_0-x)=frac{b}{gcd(a,b)}(y-y_0))

    这时由于系数是互质的,
    (x_0-x=frac{b}{gcd(a,b)}),

    所以(x=x_0-frac{b}{gcd(a,b)})

    线性求逆元

    (Mod=ki+r)

    则有(ki+requiv 0pmod{Mod})

    同时乘上(i^{-1}r^{-1})得到(kr^{-1}+i_{-1}equiv 0pmod{Mod})

    所以(i^{-1}equiv-kr^{-1}pmod{Mod})

    (i^{-1}equiv-lfloorfrac{Mod}{i} floor(p\%i)^{-1})

    int - > long long 0 - > 100
  • 相关阅读:
    从底层谈WebGIS 原理设计与实现(六):WebGIS中地图瓦片在Canvas上的拼接显示原理
    从底层谈WebGIS 原理设计与实现(五):WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图
    从底层谈WebGIS 原理设计与实现(四):WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图
    从底层谈WebGIS 原理设计与实现(三):WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)
    从底层谈WebGIS 原理设计与实现(二):探究本质,WebGIS前端地图显示之地图比例尺换算原理
    [leetcode]Rotate List
    [leetcode]Remove Element
    [leetcode]Binary Tree Level Order Traversal II
    [leetcode]Populating Next Right Pointers in Each Node II
    [leetcode]Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/anyixing-fly/p/13713679.html
Copyright © 2011-2022 走看看