其他分享
首页 > 其他分享> > 7.5 $\text{Math Notes}$

7.5 $\text{Math Notes}$

作者:互联网

\(\large\text{Date: 7.5}\)

\(\text{OI Maths}\)

\(\text{I - CRT}\)

一句话: \(\large Ans=\sum\limits_{i=1}^nr_iM_i\operatorname{inv}(M_i, m_i) (\mod M)\)

(\(\large M_i=\dfrac{M}{m_i},M=\prod m_i\))

\(\rm exgcd\) 求 逆元:

LL exgcd(LL a, LL b, LL &x, LL &y) {
    if(!b) { x = 1; y = 0; return a; }
    LL d = exgcd(b, a % b, x, y);
    LL t = x;
    x = y;
    y = t - (a / b) * y;
    return d;
}

LL inv(int a, int p) {
    LL x, y;
	exgcd(a, p, x, y);
    return (x + p) % p;
}

\(2.\) 多项式乘法逆

题意:求 \(G(x)\),使得 \(G(x)\) 与已知多项式 \(F(x)\) 的乘积在模 \(x^n\) 意义下结果为 \(1\)

来来来,颓柿子了:

欲求 \(\large f(x)\cdot g(x)\equiv 1(\mod x^n)\)

假设已知 \(\large f(x)\cdot h(x)\equiv 1(\mod x^\frac{n}{2})\)

而 \(\large f(x)\cdot g(x)\equiv 1(\mod x^n)\) 是 \(\large f(x)\cdot g(x)\equiv 1(\mod x^\frac{n}{2})\) 的充分条件。

联立 \(\large \begin{cases}f(x)\cdot h(x)\equiv 1 (\mod x^\frac{n}{2})\\f(x)\cdot g(x)\equiv 1(\mod x^\frac{n}{2}) \end{cases}\)

得 \(\large g(x)-h(x) \equiv 0(\mod x^\frac{n}{2})\)

平方,得 \(g^2(x)+h^2(x)-2g(x)h(x)\equiv 0(\mod x^n)\) (这里模数同时平方)

同乘 \(\large f(x)\),得 \(\large f(x)g^2(x)+f(x)h^2(x)-2f(x)g(x)h(x)\equiv 0(\mod x^n)\)

我们认为 \(\large f(x)g(x)\equiv 1(\mod x^n)\), 所以

\(\large g(x)+f(x)h^2(x)-2h(x)\equiv 0(\mod x^n)\)

移项,得 \(\large g(x)=2h(x)-f(x)h^2(x)\)

结论: \(\large g(x)=2h(x)-f(x)h^2(x)\) 很显然这是一个递归的过程。

至此,我们用 \(\large f(x)g_{n-1}(x)\equiv 1(\mod x^\frac{n}{2})\) 中的 \(\large g_{x-1}(x)\) 推导出了 \(\large f(x)g_n(x)\equiv 1(\mod x^n)\) 中的 \(\large g_n(x)\)

这个过程和快速幂类似(然而我并不清楚)。

边界条件?

\(3.\text{The Mobius Inversion}\)

莫比乌斯反演定理:对于定义于非负整数集合上的两个函数\(F(n)\)和\(f(n)\),若它们满足\(\large F(n)=\sum_{d|n}f(d)\),则可得\(\large f(d)=\sum_{d|n}\mu(d)F(\dfrac{n}{d})\)。

对于定义于非负整数集合上的两个函数\(F(n)\)和\(f(n)\),若它们满足\(\large F(n)=\sum_{n|d}f(d)\)(注意,请仔细看这个式子,它与上面那个式子长得不一样),则可得\(\large f(d)=\sum_{n|d}\mu(\frac dn)F(d)\),其实也是同理的。

线性筛预处理 \(\large \mu(x)\):

inline void init(int n) {
    mu[1] = 1;
    for(int i = 2; i <= n; i++) {
        if(!vis[i]) { mu[i] = -1; pr[++cnt] = i; }
        for(int j = 1; j <= cnt && i * pr[j] <= n; j++) {
            vis[i * pr[j]] = 1;
            if(i % pr[j] == 0) break;
            else mu[i * pr[j]] = -mu[i];
        }
    }
}

标签:frac,cdot,text,Notes,large,mod,LL,Math,equiv
来源: https://www.cnblogs.com/Doge297778/p/16446599.html