数论

  • 若 a≡b(modm)a \equiv b (\mod m)a≡b(modm),则 (a,m)=(b,m)(a, m) = (b, m)(a,m)=(b,m)。
  • a≡b(modmi)(1≤i≤n)a \equiv b(\mod m_i)(1 \le i \le n)a≡b(modmi​)(1≤i≤n) 同时成立,当且仅当 a≡b(mod[m1,m2,…,mn])a \equiv b(\mod [m_1,m_2,\dots,m_n])a≡b(mod[m1​,m2​,…,mn​])。
  • 素数定理 设 π(x)\pi(x)π(x) 为不超过 xxx 的素数个数,当 x→∞x \to \inftyx→∞ 时,π(x)∼xln⁡(x)\pi(x) \thicksim \frac{x}{\ln(x)}π(x)∼ln(x)x​。

线性求逆元

  • 设模数为质数 PPP,待求逆元的为 kkk,则
    P=⌊Pk⌋k+(Pmodk)⇔⌊Pk⌋k+(Pmodk)≡0(modP)\begin{aligned}P = \lfloor \frac{P}{k} \rfloor k + (P \mod k) \Leftrightarrow \lfloor \frac{P}{k} \rfloor k + (P \mod k) \equiv 0(\mod P)\end{aligned} P=⌊kP​⌋k+(Pmodk)⇔⌊kP​⌋k+(Pmodk)≡0(modP)​
  • 同乘 k−1(Pmodk)−1k^{-1}(P\mod k)^{-1}k−1(Pmodk)−1 后移项,得
    k−1≡−⌊Pk⌋(Pmodk)−1(modP)k^{-1} \equiv -\lfloor \frac{P}{k} \rfloor (P \mod k)^{-1} (\mod P) k−1≡−⌊kP​⌋(Pmodk)−1(modP)
 inv[1] = 1;for (int i = 2; i <= n; ++i)inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod;

快速乘

算法一

  • 对乘数 bbb 进行二进制拆分,化乘法为加法,时间复杂度 O(log⁡b)\mathcal O(\log b)O(logb)。
inline ll quickPower(ll a, ll b)
{ll res = 0;while (b){if (b & 1)add(res, a);add(a, a);b >>= 1;}return res;
}

算法二

  • abmodp=ab−⌊abp⌋pab \mod p = ab - \lfloor \frac{ab}{p}\rfloor pabmodp=ab−⌊pab​⌋p。
  • 利用 long double 存储 ⌊abp⌋\lfloor \frac{ab}{p}\rfloor⌊pab​⌋,时间复杂度 O(1)\mathcal O(1)O(1),有极小的概率出错。
typedef long long ll;
typedef long double ld;
const ld eps = 1e-8;inline ll quickPower(ll a, ll b)
{ll res = a * b - (ll)((ld)a / mod * b + eps) * mod;return res < 0 ? res + mod : res;
}

扩展欧几里得

  • 设 d=gcd⁡(a,b)d = \gcd(a,b)d=gcd(a,b),求 ax+by=dax + by = dax+by=d 的一组 (x,y)(x, y)(x,y)
    ax+by=d,bx′+(amodb)y′=dbx′+(a−⌊ab⌋b)y′=day′+b(x′−⌊ab⌋y′)=dx=y′,y=x′−⌊ab⌋y′\begin{aligned}ax + by = d, bx' + (a\mod b)y' &= d \\bx'+(a - \lfloor \frac{a}{b}\rfloor b)y'&= d \\ay' + b(x' - \lfloor \frac{a}{b} \rfloor y') &= d \\x = y', y = x' - \lfloor \frac{a}{b} \rfloor y' \\\end{aligned} ax+by=d,bx′+(amodb)y′bx′+(a−⌊ba​⌋b)y′ay′+b(x′−⌊ba​⌋y′)x=y′,y=x′−⌊ba​⌋y′​=d=d=d​
    迭代到 a′=d,b′=0a' = d, b' = 0a′=d,b′=0 可得 x′=1,y′=0x' = 1, y' = 0x′=1,y′=0,由数学归纳法可得最后解的大小满足:
    ∣x∣≤b,∣y∣≤a\begin{aligned}|x|\le b, |y|\le a\end{aligned} ∣x∣≤b,∣y∣≤a​
inline void exGcd(ll a, ll b, ll &x, ll &y, ll &g)
{if (!b){x = 1;y = 0;g = a;return ;}exGcd(b, a % b, y, x, g);y -= a / b * x;
}

线性同余方程

  • 定理1 若 (a,b)∣c(a,b)|c(a,b)∣c,则二元一次方程 ax+by=c(a,b,c∈N)ax + by = c(a,b,c\in\mathbb N)ax+by=c(a,b,c∈N) 有无穷多解,否则方程不存在整数解。
  • 定理2 若二元一次方程 ax+by=c(a,b,c∈N)ax + by = c(a,b,c\in \mathbb N)ax+by=c(a,b,c∈N) 有解且特解为 x=x0,y=y0x = x_0, y = y_0x=x0​,y=y0​,那么方程的解可表示为 x=x0+bdt,y=y0−adt,t∈Zx = x_0 + \frac{b}{d}t, y = y_0 - \frac{a}{d}t, t\in \mathbb Zx=x0​+db​t,y=y0​−da​t,t∈Z
  • 定理3 nnn 元一次不定方程 ∑i=1naixi=c(ai,c∈N)\sum \limits_{i = 1}^{n}a_ix_i = c(a_i,c\in\mathbb N)i=1∑n​ai​xi​=c(ai​,c∈N) 有解的充要条件为 (a1,a2,…,an)∣c(a_1,a_2,\dots,a_n) | c(a1​,a2​,…,an​)∣c

解 n 元一次不定方程

  • 解 nnn 元一次不定方程 ∑i=1naixi=c(ai,c∈N)\sum \limits_{i = 1}^{n}a_ix_i = c(a_i,c\in\mathbb N)i=1∑n​ai​xi​=c(ai​,c∈N) 。
    顺次求出 (a1,a2)=d2,(d2,a3)=d3,…,(dn−1,an)=dn(a_1, a_2) = d_2, (d_2, a_3) = d_3,\dots,(d_{n-1}, a_n) = d_n(a1​,a2​)=d2​,(d2​,a3​)=d3​,…,(dn−1​,an​)=dn​。
    若 dn∣cd_n | cdn​∣c,则方程有解,作方程组
    a1x1+a2x2=d2t2d2t2+a3x3=d3t3…dn−1tn−1+anxn=c\begin{aligned} a_1x_1 + a_2x_2 &= d_2t_2 \\d_2t_2 + a_3x_3 &= d_3t_3 \\&\dots \\d_{n-1}t_{n-1} + a_nx_n &= c\\\end{aligned} a1​x1​+a2​x2​d2​t2​+a3​x3​dn−1​tn−1​+an​xn​​=d2​t2​=d3​t3​…=c​
    求出最后一个方程的解,依次往上迭代。

解 n 元一次不定方程组

  • 解 mmm 个 nnn 元一次不定方程组成的方程组,其中 m<nm < nm<n,由 m−1m - 1m−1 个不定方程,消去 m−1m - 1m−1 个未知数,将方程组转化为 n−m+1n - m + 1n−m+1 元的一次不定方程。

解一元线性同余方程

  • 二元一次不定方程 ax+by=cax + by = cax+by=c ⇔\Leftrightarrow⇔ 求一元线性同余方程 ax≡c(modb)ax \equiv c(\mod b)ax≡c(modb) 整数解,设 d=gcd⁡(a,b)d = \gcd(a, b)d=gcd(a,b),若 ddd 不能整除 ccc 则无解,否则在 modc\mod cmodc 的意义下解有 ddd 个,解的形式为
    x=x0+bdt,t∈Z\begin{aligned}x = x_0 + \frac{b}{d}t, t\in\mathbb Z\end{aligned} x=x0​+db​t,t∈Z​

解一元线性同余方程组

算法1 合并法

  • 以合并下面两个方程为例,
    x≡b1(modm1)x≡b2(modm2)\begin{aligned} x &\equiv b_1 (\mod m_1) \\ x &\equiv b_2 (\mod m_2) \\ \end{aligned} xx​≡b1​(modm1​)≡b2​(modm2​)​
    设 x=b1+m1y1=b2+m2y2x = b_1 + m_1y_1 = b_2 + m_2 y_2x=b1​+m1​y1​=b2​+m2​y2​,即 m2y2−m1y1=b1−b2m_2y_2 - m_1y_1 = b_1 - b_2m2​y2​−m1​y1​=b1​−b2​
    解出 y2y_2y2​,设 m=[m1,m2]m = [m_1,m_2]m=[m1​,m2​],得到方程 x≡b2+m2y2(modm)x \equiv b_2 + m_2y_2(\mod m)x≡b2​+m2​y2​(modm)
    若有多个方程,依据上述过程直至消成单个方程即可。

算法2 中国剩余定理

  • 设 m1,m2,…,mrm_1,m_2,\dots,m_rm1​,m2​,…,mr​ 为两两互素的正整数,则同余方程组
    x≡a1(modm1)x≡a2(modm2)…x≡ar(modmr)\begin{aligned}x &\equiv a_1 (\mod m_1)\\x &\equiv a_2 (\mod m_2)\\&\dots \\x &\equiv a_r (\mod m_r)\\\end{aligned} xxx​≡a1​(modm1​)≡a2​(modm2​)…≡ar​(modmr​)​
    有在模 M=∏i=1rmiM = \prod\limits_{i = 1}^{r}m_iM=i=1∏r​mi​ 意义下的唯一解,即中国剩余定理。
  • 设 Mi=MmiM_i = \frac{M}{m_i}Mi​=mi​M​,tit_iti​ 为 Miti=1(modmi)M_it_i = 1(\mod m_i)Mi​ti​=1(modmi​) 的解,则唯一解为 x=(∑i=1raitiMi)modMx =\left( \sum\limits_{i=1}^{r}a_it_iM_i\right)\mod Mx=(i=1∑r​ai​ti​Mi​)modM

原根

  • 设 n,a∈N+,n>1,a⊥nn,a \in \mathbb N_{+}, n>1, a \perp nn,a∈N+​,n>1,a⊥n,则 ∃1≤r≤n,ar≡1(modn)\exist 1\le r\le n, a^r \equiv 1(\mod n)∃1≤r≤n,ar≡1(modn),将最小的 rrr 称为 aaa 模 nnn 的阶,记作 Ordn(a)\text{Ord}_n(a)Ordn​(a)。
  • 若 a⊥n,aN≡1(modn)a\perp n, a^{N} \equiv 1(\mod n)a⊥n,aN≡1(modn),则 Ordn(a)∣N\text{Ord}_n(a) | NOrdn​(a)∣N。
  • 若 a⊥na \perp na⊥n,Ordn(a)∣ϕ(n)\text{Ord}_n(a) \vert \phi(n)Ordn​(a)∣ϕ(n)。

原根

  • 设 a,n∈N+,n>1,a⊥na,n \in \mathbb N_{+}, n > 1, a\perp na,n∈N+​,n>1,a⊥n,若 Ordn(a)=ϕ(n)\text{Ord}_n(a) = \phi(n)Ordn​(a)=ϕ(n),则称 aaa 为模 nnn 的一个原根。
  • 剩余类 所有模 nnn 同余的整数构成的集合,设余数为 rrr,则该剩余类简记为 r‾\overline{r}r。
  • 剩余系 模 nnn 所得的余数域。
  • 简化剩余系 若模 nnn 的一个剩余类内所有数都与 nnn 互素,就称其为与模 nnn 互素的剩余类,在与模 nnn 互素的全体剩余类中,从每一个类中任取一个数作为代表组成的集合,称为模 nnn 的一个简化剩余系,容易证明,简化剩余系关于模 nnn 乘法封闭。
  • 记 δ=Ordn(a)\delta = \text{Ord}_n(a)δ=Ordn​(a),则 a0,a1,…,aδ−1a^0, a^1, \dots, a^{\delta - 1}a0,a1,…,aδ−1 两两不同余,当 aaa 是 nnn 的原根时,a0,a1,…,aδ−1a^0, a^1, \dots, a^{\delta - 1}a0,a1,…,aδ−1 构成模 nnn 的简化剩余系,当 nnn 为质数时,{a0,a1,…,aδ−1}\{a^0, a^1, \dots, a^{\delta - 1}\}{a0,a1,…,aδ−1} 与 {1,2,…,n−1}\{1,2,\dots,n -1\}{1,2,…,n−1} 构成双射。
  • 只有 2,4,pk,2pk(p为奇素数)2,4,p^k,2p^k(p为奇素数)2,4,pk,2pk(p为奇素数) 有原根。
  • 若 nnn 存在原根,设 nnn 的最小原根为 ggg,则 gsmodn(1≤s≤ϕ(n),s⊥ϕ(n))g^s \mod n(1\le s\le \phi(n), s\perp\phi(n))gsmodn(1≤s≤ϕ(n),s⊥ϕ(n)) 一定也是它的原根,因此 nnn 共有 ϕ(ϕ(n))\phi(\phi(n))ϕ(ϕ(n)) 个原根。

原根的求法

  • 暴力枚举最小原根 ggg,满足 g⊥ng\perp ng⊥n,要验证 ggg 是否是 nnn 的原根。
  • 根据 Ordn(a)∣ϕ(n)\text{Ord}_n(a) | \phi(n)Ordn​(a)∣ϕ(n),我们只需验证对于每个 d∣ϕ(n)(d≠ϕ(n))d \vert \phi(n)(d \not = \phi(n))d∣ϕ(n)(d=ϕ(n)),均有 ad≢1(modn)a^d \not \equiv 1(\mod n)ad≡1(modn)。
  • 进一步地,设 ϕ(n)=∏i=1mpici\phi(n) = \prod \limits_{i = 1}^{m}p_i^{c_i}ϕ(n)=i=1∏m​pici​​,我们只需对所有 pip_ipi​,验证 aϕ(n)pi≢1(modn)a^{\frac{\phi(n)}{p_i}} \not \equiv 1(\mod n)api​ϕ(n)​≡1(modn)。
  • 之后暴力枚举 sss,满足 s⊥ϕ(n)s\perp \phi(n)s⊥ϕ(n),就能求出所有的原根。
inline void findRoot(int x)
{int u = x, phi = x;for (int i = 2, im = sqrt(x); i <= im && i <= u; ++i)if (u % i == 0){phi = phi / i * (i - 1);u /= i;while (u % i == 0)u /= i; }if (u > 1)phi = phi / u * (u - 1); cm = am = 0;u = phi;for (int i = 2, im = sqrt(phi); i <= im && i <= u; ++i)if (u % i == 0){cur[++cm] = i;u /= i;while (u % i == 0)u /= i;}if (u > 1)cur[++cm] = u;int g;for (g = 1; g < x; ++g){if (std::__gcd(g, x) > 1)continue ;bool flag = false;for (int i = 1; i <= cm; ++i)if (quick_pow(g, phi / cur[i], x) == 1){flag = true;break ;}if (!flag)break ;}if (g == x)return ;int res = 1;for (int s = 1; s <= phi; ++s){res = 1ll * res * g % x;if (std::__gcd(phi, s) > 1)continue ;ans[++am] = res;}std::sort(ans + 1, ans + am + 1);
}

数论函数

  • 积性函数 函数 fff 满足 ∀a,b∈N,a⊥b\forall a,b\in \mathbb N,a\perp b∀a,b∈N,a⊥b,f(ab)=f(a)f(b)f(ab) = f(a)f(b)f(ab)=f(a)f(b)。
  • 完全积性函数 函数 fff 满足 ∀a,b∈N\forall a,b\in \mathbb N∀a,b∈N,f(ab)=f(a)f(b)f(ab) = f(a)f(b)f(ab)=f(a)f(b)。

常见积性函数

欧拉函数

  • 记作 φ(n)\varphi(n)φ(n),指不超过 nnn 且与 nnn 互素的正整数个数,由中国剩余定理可知其为积性函数。
  • 定理1 设 n=∏i=1mpicin = \prod \limits_{i = 1}^{m}p_i^{c_i}n=i=1∏m​pici​​,则 φ(n)=∏i=1m(pi−1)pici−1=∏i=1m(1−1pi)\varphi(n) = \prod \limits_{i = 1}^{m}(p_i - 1)p_i^{c_i - 1} = \prod\limits_{i = 1}^{m}(1 - \frac{1}{p_i})φ(n)=i=1∏m​(pi​−1)pici​−1​=i=1∏m​(1−pi​1​)。
    • 推论1 当 nnn 为奇数时,φ(2n)=φ(n)\varphi(2n) = \varphi(n)φ(2n)=φ(n)。
    • 推论2 设 nnn 为一个大于 2 的正整数,那么 φ(n)\varphi(n)φ(n) 是偶数。
  • 定理2 当 n>1n > 1n>1 时,[1,n][1,n][1,n] 中与 nnn 互质的整数的和为 nφ(n)2\frac{n\varphi(n)}{2}2nφ(n)​。
  • 欧拉定理 对于任意两个互质的正整数 a,m(m≥2)a,m(m\ge2)a,m(m≥2),有 aφ(m)≡1(modm)a^{\varphi(m)}\equiv 1(\mod m)aφ(m)≡1(modm),故 aφ(m)−1a^{\varphi(m) - 1}aφ(m)−1 为 aaa 在模 mmm 意义下的逆元。
    • 推论(费马小定理) 设 mmm 为质数,am−1≡1(modm)a^{m - 1}\equiv 1(\mod m)am−1≡1(modm),故 am−2a^{m-2}am−2 为 aaa 在模 mmm 意义下的逆元。

证明

  • ∀b,c\forall b,c∀b,c,ab≡ac(modm)⇔a(b−c)≡0(modm)ab \equiv ac(\mod m) \Leftrightarrow a(b - c)\equiv 0(\mod m)ab≡ac(modm)⇔a(b−c)≡0(modm),因为 a⊥ma\perp ma⊥m,b≡c(modm)b\equiv c(\mod m)b≡c(modm),故当 b≢c(modm)b\not \equiv c (\mod m)b≡c(modm) 时,ab‾,ac‾\overline{ab},\overline{ac}ab,ac 也表示不同的剩余类。
  • 设 mmm 的简化剩余系为 {a1‾,a2‾,…,aφ(m)‾}\{\overline{a_1},\overline{a_2},\dots,\overline{a_{\varphi(m)}}\}{a1​​,a2​​,…,aφ(m)​​} ,由其模 mmm 乘法封闭的性质以及上述结论,可以推知 {aa1‾,aa2‾,…aaφ(m)‾}\{\overline{aa_1},\overline{aa_2}, \dots\overline{aa_{\varphi(m)}}\}{aa1​​,aa2​​,…aaφ(m)​​} 也能表示 mmm 的简化剩余系,故:
    aφ(m)a1a2…aφ(m)≡(aa1)(aa2)…(aaφ(m))≡a1a2…aφ(m)(modm)a^{\varphi(m)} a_1a_2\dots a_{\varphi(m)} \equiv (aa_1)(aa_2)\dots(aa_{\varphi(m)}) \equiv a_1a_2\dots a_{\varphi(m)} (\mod m) aφ(m)a1​a2​…aφ(m)​≡(aa1​)(aa2​)…(aaφ(m)​)≡a1​a2​…aφ(m)​(modm)
  • 由简化剩余系的定义可知 aφ(m)≡1(modm)a^{\varphi(m)} \equiv 1(\mod m)aφ(m)≡1(modm),证毕。
  • 扩展欧拉定理 对于任意正整数 a,b,ma,b,ma,b,m,若 b≥φ(m)b \ge \varphi(m)b≥φ(m),则 ab≡abmodφ(m)+φ(m)(modm)a^b \equiv a^{b \mod \varphi(m) + \varphi(m)}(\mod m)ab≡abmodφ(m)+φ(m)(modm)。若 a,ma,ma,m 互质,则 ab≡abmodϕ(m)(modm)a^b \equiv a^{b \mod \phi(m)}(\mod m)ab≡abmodϕ(m)(modm)。

莫比乌斯函数

  • 记作 μ(n)\mu(n)μ(n),若 nnn 有平方数因子,则 μ(n)=0\mu(n) = 0μ(n)=0,否则 nnn 为 kkk 个不同质数的成绩,则 μ(n)=(−1)k\mu(n) = (-1)^kμ(n)=(−1)k。特别地 μ(1)=1\mu(1) = 1μ(1)=1。

除数函数

  • σk(n)\sigma_k(n)σk​(n) 表示 nnn 所有正因子的 kkk 次幂之和。
  • d(n)=σ0(n)d(n) = \sigma_0(n)d(n)=σ0​(n) 表示 nnn 的正因子个数,σ(n)=σ1(n)\sigma(n) = \sigma_1(n)σ(n)=σ1​(n) 表示 nnn 的所有正因子之和。

幂函数

  • Idk(n)=nk,1(n)=Id0(n)=1,Id(n)=Id1(n)=1Id_k(n) = n^k, 1(n) = Id_0(n) = 1, Id(n) = Id_1(n) = 1Idk​(n)=nk,1(n)=Id0​(n)=1,Id(n)=Id1​(n)=1。

单位函数

  • ε(n)=[n=1]\varepsilon(n) = [n = 1]ε(n)=[n=1]。

Dirichlet 卷积

  • 定义数论函数 f,gf,gf,g 的 Dirichlet\text{Dirichlet}Dirichlet 卷积为 (f∗g)(n)=∑d∣nf(d)g(nd)(f*g)(n) = \sum \limits_{d|n}f(d)g(\frac{n}{d})(f∗g)(n)=d∣n∑​f(d)g(dn​),满足交换律、结合律、分配率,且有单位元 ε\varepsilonε。

  • 若 f,gf,gf,g 均为积性函数,则 f∗gf*gf∗g 也为积性函数。

  • 常见的 Dirichlet\text{Dirichlet}Dirichlet 卷积:
    d=1∗1,σ=Id∗1,φ=μ∗Id,ε=μ∗1d = 1 * 1, \sigma = Id * 1, \varphi = \mu * Id, \varepsilon = \mu * 1 d=1∗1,σ=Id∗1,φ=μ∗Id,ε=μ∗1

  • 由于 Id=1∗μ∗Id=1∗φId = 1 * \mu * Id = 1 * \varphiId=1∗μ∗Id=1∗φ,即 n=∑d∣nφ(d)n = \sum \limits_{d | n}\varphi(d)n=d∣n∑​φ(d)。

莫比乌斯反演

  • 对于两个函数 f,gf,gf,g:
    f(n)=∑d∣ng(d)⇔g(n)=∑d∣nμ(nd)f(d)f(n) = \sum \limits_{d | n}g(d) \Leftrightarrow g(n) = \sum \limits_{d|n} \mu(\frac{n}{d})f(d) f(n)=d∣n∑​g(d)⇔g(n)=d∣n∑​μ(dn​)f(d)

证明
∵f=1∗g⇒1∗μ∗g=μ∗f⇒g=μ∗fg=μ∗f⇒1∗g=1∗μ∗f⇒f=1∗g∴f=1∗g⇔g=μ∗f\begin{aligned} \because & f = 1 * g \Rightarrow 1 * \mu * g = \mu * f \Rightarrow g = \mu * f \\ & g = \mu * f \Rightarrow 1 * g = 1 * \mu * f \Rightarrow f = 1 * g \\ \therefore & f = 1 * g \Leftrightarrow g = \mu * f \end{aligned} ∵∴​f=1∗g⇒1∗μ∗g=μ∗f⇒g=μ∗fg=μ∗f⇒1∗g=1∗μ∗f⇒f=1∗gf=1∗g⇔g=μ∗f​

  • 另一种形式:
    f(n)=∑n∣dg(d)⇔g(n)=∑n∣df(d)μ(dn)f(n) = \sum \limits_{n | d} g(d) \Leftrightarrow g(n) = \sum\limits_{n|d}f(d)\mu(\frac{d}{n}) f(n)=n∣d∑​g(d)⇔g(n)=n∣d∑​f(d)μ(nd​)

证明
g(n)=∑n∣df(d)μ(dn)=∑n∣dμ(dn)∑d∣tg(t)=∑n∣tg(t)∑d∣tnμ(d)=∑n∣tg(t)[n=t]=g(n)f(n)=∑n∣dg(d)=∑n∣d∑d∣tf(t)μ(td)=∑n∣tf(t)∑d∣tnμ(d)=∑n∣tf(t)[n=t]=f(n)g(n) = \sum\limits_{n|d}f(d)\mu(\frac{d}{n}) = \sum \limits_{n|d} \mu(\frac{d}{n}) \sum \limits_{d|t}g(t) = \sum \limits_{n|t}g(t)\sum \limits_{d|\frac{t}{n}}\mu(d) = \sum \limits_{n|t}g(t)[n = t] = g(n) \\ f(n) = \sum \limits_{n | d}g(d) = \sum\limits_{n|d}\sum \limits_{d|t}f(t)\mu(\frac{t}{d}) = \sum \limits_{n|t}f(t)\sum\limits_{d|\frac{t}{n}}\mu(d) = \sum\limits_{n|t}f(t)[n = t] = f(n)\\ g(n)=n∣d∑​f(d)μ(nd​)=n∣d∑​μ(nd​)d∣t∑​g(t)=n∣t∑​g(t)d∣nt​∑​μ(d)=n∣t∑​g(t)[n=t]=g(n)f(n)=n∣d∑​g(d)=n∣d∑​d∣t∑​f(t)μ(dt​)=n∣t∑​f(t)d∣nt​∑​μ(d)=n∣t∑​f(t)[n=t]=f(n)

线性筛

  • 线性筛素数的流程如下:

    • 设 lowilow_ilowi​ 表示 iii 的最小质因子。
    • 考虑从 2 到 nnn 枚举 iii,若 lowilow_ilowi​ 还未被计算出来,则 iii 为质数,lowi=ilow_i=ilowi​=i。
    • 枚举所有不超过 lowilow_{i}lowi​ 的质数 ppp,令 lowip=plow_{ip} = plowip​=p。
  • 在线性筛中,我们能得到每个数 nnn 的最小质因子 ppp 以及它的次数 kkk,则 f(n)=f(pk)f(npk)f(n) = f(p^k)f(\frac{n}{p^k})f(n)=f(pk)f(pkn​),若 f(pk)f(p^k)f(pk) 可以快速求出,就能在线性筛的同时快速求出 f(n)f(n)f(n),有时也可利用积性函数本身的性质简化计算。
  • 以 μ(n),φ(n)\mu(n),\varphi(n)μ(n),φ(n) 的筛法为例。
inline void sieve(int lim)
{phi[1] = mu[1] = 1;for (int i = 2; i <= lim; ++i){if (!low[i]){pri[++pn] = low[i] = i;phi[i] = i - 1;mu[i] = -1;}for (int j = 1; j <= pn && 1ll * i * pri[j] <= lim; ++j){int k = pri[j] * i;low[k] = pri[j];if (low[i] == pri[j]){phi[k] = phi[i] * pri[j];mu[k] = 0;break ;}phi[k] = phi[i] * (pri[j] - 1);mu[k] = -mu[i];}}
}

整除分块

  • 性质 ⌊⌊ab⌋c⌋=⌊abc⌋\lfloor \frac{\lfloor\frac{a}{b}\rfloor}{c} \rfloor = \lfloor \frac{a}{bc}\rfloor⌊c⌊ba​⌋​⌋=⌊bca​⌋。
  • 易证,⌊nd⌋\lfloor \frac{n}{d} \rfloor⌊dn​⌋ 的取值只有至多 2n2\sqrt n2n​ 种,且 ⌊nd⌋=⌊nx⌋\lfloor \frac{n}{d} \rfloor = \lfloor \frac{n}{x} \rfloor⌊dn​⌋=⌊xn​⌋ 最大的 xxx 即满足 ⌊nd⌋x≤n,x=⌊n⌊nd⌋⌋\lfloor \frac{n}{d} \rfloor x \le n, x = \lfloor \frac{n}{\lfloor \frac{n}{d}\rfloor} \rfloor⌊dn​⌋x≤n,x=⌊⌊dn​⌋n​⌋。

常见模型

  • 1≤n,m≤1071 \le n,m \le 10^71≤n,m≤107,询问组数 T≤104T \le 10^4T≤104:
    ∑i=1n∑j=1m(i,j)=∑t=1min⁡{n,m}t∑i=1n∑j=1m[(i,j)=t]=∑t=1min⁡{n,m}t∑i=1⌊nt⌋∑j=1⌊mt⌋[(i,j)=1]=∑t=1min⁡{n,m}t∑i=1⌊nt⌋∑j=1⌊mt⌋∑d∣id∣jμ(d)=∑t=1min⁡{n,m}t∑dμ(d)⌊ntd⌋⌊mtd⌋=∑T=td=1min⁡{n,m}∑t∣Ttμ(Tt)⌊nT⌋⌊mT⌋=∑T=1min⁡{n,m}φ(T)⌊nT⌋⌊mT⌋\begin{aligned} &\sum \limits_{i = 1}^{n} \sum \limits_{j = 1}^{m}(i,j) \\= &\sum \limits_{t = 1}^{\min\{n,m\}}t\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[(i,j)=t]\\= &\sum \limits_{t = 1}^{\min\{n,m\}}t\sum\limits_{i=1}^{\lfloor\frac{n}{t}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{m}{t}\rfloor}[(i,j)=1]\\= & \sum \limits_{t = 1}^{\min\{n,m\}}t\sum\limits_{i=1}^{\lfloor\frac{n}{t}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{m}{t}\rfloor}\sum\limits_{d|i\\d|j}\mu(d)\\= & \sum \limits_{t = 1}^{\min\{n,m\}}t\sum\limits_{d}\mu(d)\lfloor\frac{n}{td}\rfloor\lfloor\frac{m}{td}\rfloor\\= & \sum\limits_{T=td=1}^{\min\{n,m\}}\sum \limits_{t | T}t\mu(\frac{T}{t})\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\\= & \sum\limits_{T=1}^{\min\{n,m\}}\varphi(T)\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\\\end{aligned} ======​i=1∑n​j=1∑m​(i,j)t=1∑min{n,m}​ti=1∑n​j=1∑m​[(i,j)=t]t=1∑min{n,m}​ti=1∑⌊tn​⌋​j=1∑⌊tm​⌋​[(i,j)=1]t=1∑min{n,m}​ti=1∑⌊tn​⌋​j=1∑⌊tm​⌋​d∣id∣j∑​μ(d)t=1∑min{n,m}​td∑​μ(d)⌊tdn​⌋⌊tdm​⌋T=td=1∑min{n,m}​t∣T∑​tμ(tT​)⌊Tn​⌋⌊Tm​⌋T=1∑min{n,m}​φ(T)⌊Tn​⌋⌊Tm​⌋​
    ​ 预处理出 φ\varphiφ 的前缀和,整除分块即可。
  • 结论 d(ij)=∑x∣i∑y∣j[(x,y)=1]d(ij) = \sum \limits_{x|i} \sum \limits_{y | j}[(x, y) = 1]d(ij)=x∣i∑​y∣j∑​[(x,y)=1]。
    • 推论 d(ijk)=∑x∣i∑y∣j∑z∣k[(x,y)=1][(y,z)=1][(x,z)=1]d(ijk) = \sum \limits_{x|i}\sum \limits_{y | j}\sum \limits_{z|k}[(x,y)=1][(y,z) = 1][(x,z) = 1]d(ijk)=x∣i∑​y∣j∑​z∣k∑​[(x,y)=1][(y,z)=1][(x,z)=1],具体应用见 SDOI2018旧试题,在有效边不多的情形下转化成三元环计数。

证明 考虑对于 ijijij 中的每一个质因数 ppp,其在 ijijij 中的次数为 bbb,在 iii 中的次数为 aaa。

对于 ijijij 的任意一个约数 ddd,设 ppp 在 ddd 中的次数为 ccc,初始时令 x=y=1x = y = 1x=y=1。

  • 若 c≤ac \le ac≤a,令 xxx 乘上 pcp^cpc。
  • 若 a<c≤ba < c \le ba<c≤b,令 yyy 乘上 pc−ap^{c - a}pc−a。

则对于任意一个约数 ddd,我们都能构造出唯一的一组互质的 x,yx,yx,y 与之对应,原命题得证。

质因数分解

Miller Rabin 素性测试

  • 根据费马小定理,我们能够得出一种检验素数的思路(即费马素性测试):

    • 验证 ∀1<a<n,an−1≡1(modn)\forall 1 < a < n, a^{n - 1} \equiv 1(\mod n)∀1<a<n,an−1≡1(modn)。
  • 很遗憾,上述做法并不能准确地判断素数,对于满足上述条件的合数,我们称之为卡迈克尔数
  • Miller Rabin\text{Miller Rabin}Miller Rabin 素性测试是基于费马素性测试的优化。
  • 二次探测定理 若 PPP 为奇素数,则 x2≡1⇔x≡1(modP)或x≡P−1(modP)x^2 \equiv 1 \Leftrightarrow x\equiv 1(\mod P) 或 x \equiv P - 1(\mod P)x2≡1⇔x≡1(modP)或x≡P−1(modP)。
  • 令 n−1=u×2tn - 1 = u \times 2^tn−1=u×2t,随机取一个 aaa,先求出 au(modn)a^u(\mod n)au(modn),对该数平方 ttt 次,若在这一过程中出现在模 nnn 意义下为 1 或为 n−1n - 1n−1,可认为通过了此轮测试。
  • 经过理论证明,单轮错误率大约 14\frac{1}{4}41​,TTT 轮测试的错误率为 4−T4^{-T}4−T,一般取 T=8∼12T = 8 \sim 12T=8∼12 即可。
  • 若取 a=2,3,5,7,11,13,17,19,23,29,31,37a = 2,3,5,7,11,13,17,19,23,29,31,37a=2,3,5,7,11,13,17,19,23,29,31,37(即前 12 个质数)可保证 n<264n < 2^{64}n<264 确定性判素。
typedef long long ll;
typedef __int128 s128;inline ll quick_pow(ll x, ll k, ll mod)
{ll res = 1;while (k){if (k & 1)res = (s128)res * x % mod;x = (s128)x * x % mod;k >>= 1;}return res;
}inline bool millerRabin(ll n, int test_times)
{if (n < 3 || !(n & 1))return n == 2;ll a = n - 1;int b = 0;while (!(a & 1))a >>= 1, ++b;while (test_times--){ll x = rand() % (n - 2) + 2,res = quick_pow(x, a, n);if (res == 1)continue ;int j = 0;for (j = 0; j < b; ++j){if (res == n - 1)break ;res = (s128)res * res % n;       }if (j >= b)return false;}return true;
}

生日悖论

  • 求 kkk 个 [1,n][1, n][1,n] 的随机整数两两不相同的概率,设该事件为 AAA,则
    P(A)=∏i=1kn−i+1n=∏i=1k(1−i−1n)P(A) = \prod \limits_{i = 1}^{k} \frac{n - i + 1}{n} = \prod\limits_{i = 1}^{k}(1 - \frac{i - 1}{n}) P(A)=i=1∏k​nn−i+1​=i=1∏k​(1−ni−1​)
  • nnn 较大时,根据近似 1−i−1n≈(1−1n)i−11 - \frac{i - 1}{n} \approx (1 - \frac{1}{n})^{i - 1}1−ni−1​≈(1−n1​)i−1,且 e≈(1+1n)ne \approx (1 + \frac{1}{n})^ne≈(1+n1​)n,原式可化为
    P(A)≈∏i=1k(1−1n)i−1=(1−1n)k(k−1)2≈e−k(k−1)2nP(A) \approx \prod \limits_{i = 1}^{k}(1 - \frac{1}{n})^{i - 1} = (1 - \frac{1}{n})^{\frac{k(k - 1)}{2}} \approx e^{-\frac{k(k - 1)}{2n}} P(A)≈i=1∏k​(1−n1​)i−1=(1−n1​)2k(k−1)​≈e−2nk(k−1)​
  • 观察该式可知,当 kkk 取到 O(n)\mathcal O(\sqrt n)O(n​) 级别时,P(A)P(A)P(A) 会发生骤降。
  • 因此 kkk 个 [1,n][1,n][1,n] 的随机整数首次出现相同数字时 kkk 的期望为 O(n)\mathcal O(\sqrt n)O(n​)。

Pollard Rho 算法

  • Pollard Rho\text{Pollard Rho}Pollard Rho 算法是一种基于随机的质因数分解算法,可以以期望时间复杂度 O(n14)\mathcal O(n^{\frac{1}{4}})O(n41​) 找到合数 nnn 的某个非平凡因子。
  • 考虑选取适当的 kkk 使得 1<d=gcd⁡(k,n)<n1 < d = \gcd(k,n) < n1<d=gcd(k,n)<n,则显然 ddd 是 nnn 的一个约数,这样的 kkk 相对较多。
  • 若 nnn 本身是质数,可直接用 Miller Rabin\text{Miller Rabin}Miller Rabin 素性测试判定。否则构造伪随机数列 xi+1=(xi2+c)modnx_{i + 1} = (x_i^2 + c)\mod nxi+1​=(xi2​+c)modn,其中 ccc 为初始时指定的某一随机数,设 mmm 为 nnn 的最小非平凡因子,令 yi=ximodmy_i = x_i \mod myi​=xi​modm,则由生日悖论,满足 ∃i<j,yi=yj\exist i<j, y_i = y_j∃i<j,yi​=yj​ 所需的序列 xxx 的期望长度为 O(m)≤O(n14)\mathcal O(\sqrt m) \le \mathcal O(n^{\frac{1}{4}})O(m​)≤O(n41​),期望枚举 O(m)\mathcal O(\sqrt m)O(m​) 个 iii 我们便能得到 nnn 的一个约数 gcd⁡(∣xi−xj∣,n)\gcd(|x_i - x_j|, n)gcd(∣xi​−xj​∣,n)。
  • 可实际情况并不允许我们去暴力枚举所有 i,ji,ji,j,考虑到 xix_ixi​ 的周期性,我们采用一种基于倍增的实现方式,即正序枚举 t≥0t\ge 0t≥0,每次检查 gcd⁡(∣xi−xi+k∣,n)(1≤k≤2t)\gcd(|x_i - x_{i+k}|,n)(1 \le k \le 2^t)gcd(∣xi​−xi+k​∣,n)(1≤k≤2t) 是否满足条件。
  • 注意到 gcd⁡(abmodn,n)=gcd⁡(ab,n)≥gcd⁡(a,n),1≤a,b<n\gcd(ab \mod n, n) =\gcd(ab, n) \ge \gcd(a,n), 1 \le a,b < ngcd(abmodn,n)=gcd(ab,n)≥gcd(a,n),1≤a,b<n,实际实现时我们并不需要每次都暴力求 gcd⁡\gcdgcd,而可以将若干次检查合为一次,以减小时间常数。
  • 上述步骤许多部分基于估计,实际上并不严谨,但 Pollard Rho\text{Pollard Rho}Pollard Rho 算法在实际环境中运行得相当不错。
inline ll pollardRho(ll n)
{ll rx = 0, x = 0, d, val = 1;ll c = rand() % (n - 1) + 1;for (int t = 1; ; t <<= 1, rx = x, val = 1){for (int k = 1; k <= t; ++k){x = f(x, c, n);val = (s128)val * Abs(x - rx) % n;if ((k % 127) == 0){d = std::__gcd(val, n);if (d > 1)return d;}}ll d = std::__gcd(val, n);if (d > 1)return d;}
}inline void Factor(ll n, ll &max_factor)
{   // 求 n 的最大素因子if (n <= max_factor || n == 1)return ;if (millerRabin(n, 10))return CkMax(max_factor, n);ll p = pollardRho(n);while (n % p == 0)n /= p;Factor(n, max_factor);Factor(p, max_factor);
}

本原勾股数组

  • 定义 三元组 (a,b,c)(a,b,c)(a,b,c) 满足 a2+b2=c2a^2 + b^2 = c^2a2+b2=c2,(a,b,c)=1(a,b,c) = 1(a,b,c)=1。
  • 性质1 a,ba,ba,b 奇偶不同,且 ccc 为奇数

    证明 分情况讨论:

    • a,ba,ba,b 均为偶数,ccc 也为偶数,(a,b,c)=2(a,b,c) = 2(a,b,c)=2,与定义矛盾。

    • a,ba,ba,b 均为奇数,ccc 为偶数,设 a=2x+1,b=2y+1,c=2za = 2x + 1, b = 2y + 1, c = 2za=2x+1,b=2y+1,c=2z,则
      a2+b2=c2⇔(2x+1)2+(2y+1)2=(2z)2⇔2x2+2y2+2x+2y+1=2z2a^2 + b^2 = c^2 \Leftrightarrow (2x + 1)^2 + (2y + 1)^2 = (2z)^2 \Leftrightarrow 2x^2+2y^2 + 2x + 2y + 1 = 2z^2 a2+b2=c2⇔(2x+1)2+(2y+1)2=(2z)2⇔2x2+2y2+2x+2y+1=2z2
      等式左边为奇数,右边为偶数,矛盾。

    • 故只能满足 性质1

  • 性质2 a,b,ca,b,ca,b,c 两两互素。

    证明 反证法,若 (a,b)=d(d>1)(a,b) = d(d > 1)(a,b)=d(d>1),设 a=dx,b=dya = dx, b = dya=dx,b=dy,则
    c=(dx)2+(dy)2=dx2+y2c = \sqrt{(dx)^2 + (dy)^2} = d \sqrt{x^2 + y^2} c=(dx)2+(dy)2​=dx2+y2​
    则 ccc 也含有约数 ddd ,与定义矛盾,其余情况同理。

  • 性质3 假定 aaa 为奇数,bbb 为偶数,c−bc - bc−b,c+bc + bc+b 均为平方数。

    证明 设 d∣(c−b,c+b)d | (c - b, c + b)d∣(c−b,c+b),有

    • d∣(c−b+c+b)⇔d∣2cd | (c - b + c + b) \Leftrightarrow d | 2cd∣(c−b+c+b)⇔d∣2c
    • d∣[c+b−(c−b)]⇔d∣2bd | [c + b - (c - b)] \Leftrightarrow d | 2bd∣[c+b−(c−b)]⇔d∣2b

    性质 2 b,cb,cb,c 互素 且 c−bc - bc−b 为奇数,一定有 d=1d = 1d=1,则 (c−b,c+b)=1(c - b, c + b) = 1(c−b,c+b)=1。

    又因为 (c−b)(c+b)=a2(c - b)(c + b) = a^2(c−b)(c+b)=a2,c−bc - bc−b,c+bc + bc+b 均为平方数。

  • 性质3 设 c−b=t2c - b = t^2c−b=t2,c+b=s2c + b = s^2c+b=s2,s>t≥1s > t \ge 1s>t≥1,解得:
    a=st,b=s2−t22,c=s2+t22a = st, b = \frac{s^2 - t^2}{2}, c = \frac{s^2 + t^2}{2} a=st,b=2s2−t2​,c=2s2+t2​
  • 对于单位圆 x2+y2=1,x=bc,y=acx^2 + y^2 = 1, x = \frac{b}{c}, y = \frac{a}{c}x2+y2=1,x=cb​,y=ca​,代入上式并取 m=ts=tan⁡θ2,m∈Rm = \frac{t}{s} = \tan\frac{\theta}{2}, m \in \mathbb Rm=st​=tan2θ​,m∈R,可得:
    (x,y)=(1−m21+m2,2m1+m2)=(1−tan⁡2θ21+tan⁡2θ2,2tan⁡θ21+tan⁡2θ2)=(cos⁡θ,sin⁡θ)(x,y) = (\frac{1 - m^2}{1 + m^2}, \frac{2m}{1 + m^2}) = (\frac{1 - \tan^2\frac{\theta}{2}}{1 + \tan^2\frac{\theta}{2}}, \frac{2\tan\frac{\theta}{2}}{1+\tan^2\frac{\theta}{2}}) = (\cos\theta, \sin\theta) (x,y)=(1+m21−m2​,1+m22m​)=(1+tan22θ​1−tan22θ​​,1+tan22θ​2tan2θ​​)=(cosθ,sinθ)

威尔逊定理

  • p为素数⇔(p−1)!+1≡0(modp)p为素数 \Leftrightarrow (p - 1)! + 1\equiv 0 (\mod p)p为素数⇔(p−1)!+1≡0(modp)

证明

  • 先证 (p−1)!+1≡0(modp)⇒p为素数(p - 1)! + 1\equiv 0 (\mod p) \Rightarrow p为素数(p−1)!+1≡0(modp)⇒p为素数
  • 反证法,假设 p=ab,a,b∈(1,p)p = ab, a,b\in(1,p)p=ab,a,b∈(1,p)。
    • 若 a≠ba \not = ba=b,显然有 (ab−1)!≡0(modab)(ab - 1)! \equiv 0(\mod ab)(ab−1)!≡0(modab),矛盾。
    • 若 a=b=pa = b = \sqrt pa=b=p​,当 p≤4p \le 4p≤4 时可直接验证,p>4p > 4p>4 必有 p,2p<p\sqrt p, 2\sqrt p < pp​,2p​<p,因此 (p−1)!≡0(modp)(p - 1)! \equiv 0 (\mod p)(p−1)!≡0(modp),同样矛盾。
  • 再证 p为素数⇒(p−1)!+1≡0(modp)p 为素数 \Rightarrow (p - 1)!+1 \equiv 0(\mod p)p为素数⇒(p−1)!+1≡0(modp)
  • 对于集合 S={x∣1≤x<p,x∈N}S = \{x|1 \le x < p,x\in \mathbb N\}S={x∣1≤x<p,x∈N},不断取出 x,y∈S,x≠y,xy≡1(modp)x,y\in S,x\not = y, xy \equiv 1(\mod p)x,y∈S,x=y,xy≡1(modp) 配成一对,由逆元性质可知,最后必定剩下 1,p−11, p - 11,p−1,因此有 (p−1)!≡−1(modp)(p - 1)! \equiv -1(\mod p)(p−1)!≡−1(modp)。

Algorithm Review 3 数论相关推荐

  1. ARTS3(Algorithm, Review , Tip/Techni, Share)

    Algorithm:每周至少做一个leetcode的算法题: Review:阅读并点评至少一篇英文技术文章: Tip/Techni:学习至少一个技术技巧: Share:分享一篇有观点和思考的技术文章. ...

  2. Algorithm Review 7 数学相关

    博弈论 待补充. Nim Game 给定 nnn 堆石子,第 iii 堆石子有 aia_iai​ 个,两名玩家轮流行动,每次可以任选一堆,取走任意多个石子,但不能不取,取走最后一个石子者获胜. 结论1 ...

  3. 《左耳听风》-ARTS-打卡记录-第二十五周

    <左耳听风>-ARTS-打卡记录-第25周 坚持不懈是一句正确的废话.前段时间,我在我的读者群中发起了一个名为 ARTS 的活动.每人每周写一个 ARTS:Algorithm 是一道算法题 ...

  4. DCC2020:VVC帧间预测中的几何划分

    本文来自DCC2020论文<Advanced Geometric-based Inter Prediction for Versatile Video Coding> 几何划分相较于三角划 ...

  5. H.266/VVC帧间预测技术学习:几何划分模式(Geometric partitioning mode, GPM)

    几何划分模式 (Geometric partitioning mode ,GPM)原理 针对图像中运动物体的边界部分,VVC采用了几何划分模式进行帧间预测.如下图所示,GPM模式在运动物体的边界处进行 ...

  6. 动态规划——矩阵连乘问题算法及实现详解(附完整代码)

    问题分析 矩阵连乘问题是经典的动态规划问题,其主要是n个矩阵进行矩阵乘法运算时,通过括号改变运算的先后顺序,减少运算次数,找到最佳划分方法,求解最少运算次数. 算法分析 矩阵连乘问题中动态规划可以帮助 ...

  7. Review of Algorithm (HITSZ) 含22年真题回忆

    Review of Algorithm (HITSZ)含22年真题回忆 1. Time Analysis 1.1 Basic 1.2 Master Method 1.3 Recurrence Prob ...

  8. [多校联考-西南大学附中]切面包(线段树/概率与期望)+ Slow Path Finding Algorithm(拓扑排序/DP)+ 分数转化(数论)

    文章目录 T1:分数转换 题目 题解 代码实现 T2:Slow Path Finding Algorithm 题目 题解 代码实现 T3:切面包 题目 题解 代码实现 T1:分数转换 题目 Time ...

  9. Algorithm Course Review(1.1)

    算法课要考试了.没想到一晃就到学期末了.一开始是打算边上课边整理算法的学习笔记的,结果拖到现在了.如果现在复习的时候不整理,估计以后都不会整理了.那就现在整理吧. 课本,算法设计技巧与分析. 先来看第 ...

最新文章

  1. java中将int转换float_在java中将float和double转换为int时有什么区别?
  2. 剑指offer_第3题_从尾到头打印链表
  3. SKU表管理之删除SKU表数据
  4. Nexus如何上传自己的jar包 (upload artifactory)
  5. Java之Object类与instanceof关键字
  6. 兼容性记录-class属性
  7. 从零开始学Axure原型设计(高级篇)
  8. Thinkphp修改一句代码,使得foreach标签支持对象,增加变量[数组对象]混合解析法!...
  9. Android之PreferenceActivity (转载)
  10. python一年365天_GitHub - yihong0618/Python365: Python365天精进计划
  11. Java与C++的区别
  12. 测试页能打印 软件不能打,打印机可以打印测试页不能打印文档怎么处理
  13. srs信道估计_信道估计(channel estimation)图解——从SISO到MIMO原理介绍
  14. python制作动态时钟_python实现简易动态时钟
  15. 支付宝企业转账到个人账户
  16. (一)JMeter性能测试,完整入门篇:性能测试操作步骤
  17. 怎样去识别是否双线主机服务器的方法
  18. 向质量要增长,内容社区告别“大水漫灌”时代
  19. STM32串口打印输出乱码的解决办法
  20. Codeforces 1183E/H Subsequences dp

热门文章

  1. 怎么调计算机运行内存大小,电脑内存怎么超频 电脑内存超频的方法以及参数设置教程...
  2. 社群运营:8个社群运营方法教你打造社群运营专家!
  3. Mybatis-Plus 实战教程
  4. 网站是HTTP?10分钟变成HTTPS!域名免费添加配置SSL证书,变成https//环境
  5. “沙漠之鼠”蒙哥马利
  6. 移动宽带光猫获取超级密码
  7. 字节跳动小程序(抖音) uniapp PHP 支付宝SDK 开发支付功能
  8. 中兴V987自制ROM官方精简版
  9. 避開創業者常犯的錯誤,5分鐘帶你搞懂「使命」「願景」和「戰略」的差異
  10. Vue脚手架项目流程