莫比乌斯反演

前言

莫比乌斯反演是数论数学中很重要的内容,可以用于解决很多组合数学的问题。莫比乌斯反演的应用非常广泛,内容很多但是结论却并不复杂。
一道经典的莫比乌斯反演题:
求: ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = d ] \sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d] i=1nj=1m[gcd(i,j)==d]
也就是说有多少对 ( i , j ) (i,j) (i,j) g c d gcd gcd d d d


先知

常见积性函数1

1. σ ( n ) \sigma(n) σ(n)——除数函数。用式子表示为: σ k ( n ) = ∑ d ∣ n d k \sigma^k(n)=\sum_{d|n}d^k σk(n)=dndk
2. d ( n ) d(n) d(n)——约数函数。表示n的约数的个数。用式子表示为: σ ( n ) = ∑ d ∣ n 1 \sigma(n)=\sum_{d|n}1 σ(n)=dn1,也可写作: d ( n ) = ∑ d = 1 n [ d ∣ n ] d(n)=\sum_{d=1}^n[d|n] d(n)=d=1n[dn] (其实没什么太大区别)。
3. σ ( n ) \sigma(n) σ(n)——约数和函数。用式子表示为: σ ( n ) = ∑ d ∣ n d = ∑ d = 1 n [ d ∣ n ] ⋅ d \sigma(n)=\sum_{d|n}d=\sum_{d=1}^n[d|n]⋅d σ(n)=dnd=d=1n[dn]d
4. φ ( n ) \varphi(n) φ(n)——欧拉函数。表示不大于n且与n互质的正整数个数,十分常见的数论函数。用式子表示: φ ( n ) = ∑ i = 1 n [ g c d ( n , i ) = 1 ] \varphi(n)=\sum_{i=1}^n[gcd(n,i)=1] φ(n)=i=1n[gcd(n,i)=1] 注意:n=1时, φ ( n ) = 1 \varphi(n)=1 φ(n)=1
5. μ ( n ) μ(n) μ(n)——莫比乌斯函数2

常见完全积性函数

1. ϵ ( n ) ϵ(n) ϵ(n)——元函数。也有人把它叫作e(n),我们只需要知道 ϵ ( n ) = [ n = 1 ] ϵ(n)=[n=1] ϵ(n)=[n=1]。( [ n = 1 ] [n=1] [n=1]代表if(n==1) n=1; else n=0;)
2. I ( n ) I(n) I(n)——恒等函数。所谓恒等就是这个函数的值恒为1。
3. i d ( n ) id(n) id(n)——单位函数。 i d ( n ) = n id(n)=n id(n)=n
4. i d ( n ) id(n) id(n)——幂函数。 i d k ( n ) = n k id^k(n)=n^k idk(n)=nk

PS:积性函数有一个特别重要的性质,那就是(积性函数∗积性函数)仍然为积性函数!!!这个性质可以用来判断能否被杜教筛!

接下来就到了狄利克雷卷积,似乎是很高深的东西


狄利克雷卷积3

定义:对于函数 f , g f,g f,g,定义它们的卷积为 ( f ∗ g ) ( n ) = ∑ d ∣ n f ( d ) g ( n d ) (f∗g)(n)=∑_{d|n}f(d)g({n\over d}) (fg)(n)=dnf(d)g(dn)(d|n代表d是n的因子 ),很明显,所得也是一个数论函数,其中 ( f ∗ g ) (f∗g) (fg)表示为将 f f f g g g,后面的括号代表范围。(PS:后面的括号一般可以省略不写,默认为n)
很显然,狄利克雷卷积满足以下运算规律,可以类比为乘法的运算法则:
交换律       (f∗g=g∗f);
结合律       ((f∗g)∗h=f∗(g∗h));
分配律       ((f+g)∗h=f∗h+g∗h);

任意函数卷积单位元仍为它本身

不要小看元函数,它充当单位元,当元函数配合上结合律时还可以用来证明一些结论
d = 1 ∗ 1 d=1∗1 d=11
σ = i d ∗ 1 σ=id∗1 σ=id1
因为       ϵ ( n ) = ∑ d ∣ n μ ( d ) ϵ(n)=∑_{d|n}μ(d) ϵ(n)=dnμ(d)
所以       ϵ = 1 ∗ μ ϵ=1∗μ ϵ=1μ
因为       φ ( n ) = ∑ d ∣ n μ ( d ) n d φ(n)=∑_{d|n}μ(d){n\over d} φ(n)=dnμ(d)dn
所以       φ = μ ∗ i d φ=μ∗id φ=μid
因为       n = ∑ d ∣ n φ ( d ) n=∑_{d|n}φ(d) n=dnφ(d)
所以       i d = φ ∗ 1 id=φ∗1 id=φ1

莫比乌斯函数 μ μ μ

莫比乌斯反演定理形式一:
F ( n ) = ∑ d ∣ n f ( d ) = > f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) F(n)=∑_{d|n}f(d)=>f(n)=∑_{d|n}μ(d)F({n\over d}) F(n)=dnf(d)=>f(n)=dnμ(d)F(dn)
证明:
变形得到:
f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) = ∑ d ∣ n μ ( d ) ∑ k ∣ n d f ( k ) = ∑ k ∣ n f ( k ) ∑ d ∣ n k μ ( d ) f(n)=∑_{d|n}μ(d)F({n\over d})=∑_{d|n}μ(d)∑_{k|{n\over d}}f(k)=∑_{k|n}f(k)∑_{d|{n\over k}}μ(d) f(n)=dnμ(d)F(dn)=dnμ(d)kdnf(k)=knf(k)dknμ(d)
因为
∑ d ∣ n μ ( d ) = { 1 , n = 1 0 , n > 1 ∑_{d|n}μ(d)= \begin{cases} 1,n=1\\ 0,n>1\\ \end{cases} dnμ(d)={1,n=10,n>1
所以当且仅当 n k = 1 {n\over k}=1 kn=1,即 n = k n=k n=k ∑ d ∣ n k μ ( d ) = 1 ∑_{d|{n\over k}}μ(d)=1 dknμ(d)=1,其余时间为0。

∑ k ∣ n f ( k ) ∑ d ∣ n k μ ( d ) = f ( n ) ∑_{k|n}f(k)∑_{d|{n\over k}}μ(d)=f(n) knf(k)dknμ(d)=f(n)
莫比乌斯反演定理形式二:
F ( n ) = ∑ n ∣ d f ( d ) = > f ( n ) = ∑ n ∣ d μ ( d n ) F ( d ) F(n)=∑_{n|d}f(d)=>f(n)=∑_{n|d}μ({d\over n})F(d) F(n)=ndf(d)=>f(n)=ndμ(nd)F(d)
证明:
k = d n k={d\over n} k=nd,得到
f ( n ) = ∑ k = 1 + ∞ μ ( k ) F ( n k ) = ∑ k = 1 + ∞ μ ( k ) ∑ n k ∣ t f ( t ) = ∑ n ∣ t f ( t ) ∑ k ∣ t n μ ( k ) f(n)=∑_{k=1}^{+\infty}μ(k)F({nk})=∑_{k=1}^{+\infty}μ(k)∑_{nk|t}f(t)=∑_{n|t}f(t)∑_{k|{t\over n}}μ(k) f(n)=k=1+μ(k)F(nk)=k=1+μ(k)nktf(t)=ntf(t)kntμ(k)
所以当且仅当 t n = 1 {t\over n}=1 nt=1,即 t = n t=n t=n ∑ k ∣ t n μ ( k ) = 1 ∑_{k|{t\over n}}μ(k)=1 kntμ(k)=1,其余时间为0。

∑ n ∣ t f ( t ) ∑ k ∣ t n μ ( k ) = f ( n ) ∑_{n|t}f(t)∑_{k|{t\over n}}μ(k)=f(n) ntf(t)kntμ(k)=f(n)
证毕。

欧拉函数 φ φ φ

欧拉函数为积性函数(若 m 、 n m、n mn互质,有 φ ( m ) φ ( n ) = φ ( m n ) φ(m)φ(n) = φ(mn) φ(m)φ(n)=φ(mn))
欧拉函数φ(n)定义为,1~n中与n的最大公约数为1的数字的个数。例如 φ(5) = 4, φ(6) = 2
  若 p p p为质数,显然 φ ( p ) = p − 1 φ(p) = p-1 φ(p)=p1
  若 n = p k n=p^k n=pk, 则n的大于1的约数有 p , 2 p , 3 p , . . . ( p k − 1 − 2 ) p , ( p k − 1 − 1 ) p p, 2p, 3p,...(p^{k-1}-2)p, (p^{k-1}-1)p p,2p,3p,...(pk12)p,(pk11)p p k − 1 p^{k-1} pk1个数。所以 φ ( n ) = p k − p k − 1 φ(n) = p^k-p^{k-1} φ(n)=pkpk1
欧拉函数有一个很著名的性质: ∑ d ∣ n φ ( d ) = n ∑_{d|n}φ(d)=n dnφ(d)=n
因为
在这里插入图片描述
所以对于任意
在这里插入图片描述
或者写成这种形式:
在这里插入图片描述 
莫比乌斯函数和欧拉函数的关系:
在这里插入图片描述


杜教筛

考虑如何求μ的前缀和
比如说 1 0 10 10^{10} 1010? 线筛会T。这时我们就需要杜教筛了。
杜教筛是以低于线性的时间复杂度来计算积性函数的前缀和的神奇筛法!
即我们需要计算的式子为: ∑ i = 1 n f ( i ) ∑_{i=1}^nf(i) i=1nf(i)( f ( i ) f(i) f(i)为积性函数)

杜教筛的套路式

我们构造两个积性函数 h h h g g g。使得 h = f ∗ g h=f∗g h=fg。记 S ( n ) = ∑ i = 1 n f ( i ) S(n)=∑_{i=1}^nf(i) S(n)=i=1nf(i)
∑ i = 1 n h ( i ) = ∑ i = 1 n ∑ d ∣ i g ( d ) f ( i d ) ∑_{i=1}^nh(i)=∑_{i=1}^n∑_{d|i}g(d)f({i\over d}) i=1nh(i)=i=1ndig(d)f(di)
→ ∑ d = 1 n g ( d ) ∑ i = 1 [ n d ] f ( i ) →∑_{d=1}^ng(d)∑_{i=1}^{[{n\over d}]}f(i) d=1ng(d)i=1[dn]f(i)
→ ∑ i = 1 n h ( i ) = ∑ d = 1 n g ( d ) ∗ S ( ⌊ n d ⌋ ) →∑_{i=1}^nh(i)=∑_{d=1}^ng(d)∗S(⌊{n\over d}⌋) i=1nh(i)=d=1ng(d)S(dn)
接着,我们将右边式子的第一项给提出来,可以得到:
∑ i = 1 n h ( i ) = g ( 1 ) ∗ S ( n ) + ∑ d = 2 n g ( d ) ∗ S ( ⌊ n d ⌋ ) ∑_{i=1}^nh(i)=g(1)∗S(n)+∑_{d=2}^ng(d)∗S(⌊{n\over d}⌋) i=1nh(i)=g(1)S(n)+d=2ng(d)S(dn)
→ g ( 1 ) ∗ S ( n ) = ∑ i = 1 n h ( i ) − ∑ d = 2 n g ( d ) ∗ S ( ⌊ n d ⌋ ) →g(1)∗S(n)=∑_{i=1}^nh(i)-∑_{d=2}^ng(d)∗S(⌊{n\over d}⌋) g(1)S(n)=i=1nh(i)d=2ng(d)S(dn)
其中的 h ( i ) = ( f ∗ g ) ( i ) h(i)=(f∗g)(i) h(i)=(fg)(i)
经各种分析,只要当你的 h ( i ) h(i) h(i)的前缀和很好求,能在较短的时间内求出,那么当我们对后面的式子进行整除分块时,求 S ( n ) S(n) S(n)的复杂度为 O ( n 2 3 ) O(n^{2\over 3}) O(n32)。对于 g g g h h h需要从我们对狄利克雷卷积中的各种式子的熟悉和仔细观察式子的能力中得到。

应用

一:求 S ( n ) = ∑ i = 1 n μ ( i ) S(n)=∑_{i=1}^nμ(i) S(n)=i=1nμ(i)
根据那个套路式: g ( 1 ) S ( n ) = ∑ i = 1 n ( f ∗ g ) ( i ) − ∑ d = 2 n g ( d ) ⋅ S ( ⌊ n d ⌋ ) g(1)S(n)=∑_{i=1}^n(f∗g)(i)−∑_{d=2}^ng(d)⋅S(⌊{n\over d}⌋) g(1)S(n)=i=1n(fg)(i)d=2ng(d)S(dn),我们只需要找一个积性函数 g g g使得这个函数与μ的卷积的前缀和容易求。如果你认真的看了上文,应该就可以很轻松的想到一个积性函数 I I I
我们知道 μ ∗ I = ϵ μ∗I=ϵ μI=ϵ,很显然,单位元的前缀和非常好求,就是1,并且 I I I十分方便整除分块。所以我们把这个积性函数带入上述式子中可以得到:
S ( n ) = 1 − ∑ d = 2 n S ( ⌊ n d ⌋ ) S(n)=1−∑_{d=2}^nS(⌊{n\over d}⌋) S(n)=1d=2nS(dn)
这就是杜教筛莫比乌斯函数的前缀和。
二:求 S ( n ) = ∑ i = 1 n φ ( i ) S(n)=∑_{i=1}^nφ(i) S(n)=i=1nφ(i)
与求莫比乌斯函数的思路类似。
我们在脑海中找到一个与欧拉函数有关的卷积式子: φ ∗ I = i d φ∗I=id φI=id
我们可以发现,在筛欧拉函数前缀和所选择的积性函数g同样也是I哟!代入得:
S ( n ) = ∑ i = 1 n i − ∑ d = 2 n S ( ⌊ n d ⌋ ) S(n)=∑_{i=1}^ni−∑_{d=2}^nS(⌊{n\over d}⌋) S(n)=i=1nid=2nS(dn)
前面那个式子可以利用等差数列求和公式 O ( 1 ) O(1) O(1)的计算出结果,后面同样利用整除分块。
所以,我们又学会了如何筛欧拉函数的前缀和啦!
三:求 S ( n ) = ∑ i = 1 n i ⋅ φ ( i ) S(n)=∑_{i=1}^ni⋅φ(i) S(n)=i=1niφ(i)
这个式子是不是无法一眼看出需要配什么积性函数了呢?
我们考虑狄利克雷卷积的形式: ∑ d ∣ n ( d ⋅ φ ( d ) ) ⋅ g ( n d ) ∑_{d|n}(d⋅φ(d))⋅g({n\over d}) dn(dφ(d))g(dn)
我们看前面这个 d d d不太爽,考虑后面配出一个积性函数使得这个 d d d能够被约掉。因此,我们尝试将 g g g配成 i d id id。这样就可以把 d d d给弄没!代入得:
∑ d ∣ n ( d ⋅ φ ( d ) ) ⋅ n d = ∑ d ∣ n n ⋅ φ ( d ) ∑_{d|n}(d⋅φ(d))⋅{n\over d}=∑_{d|n}n⋅φ(d) dn(dφ(d))dn=dnnφ(d) → = n ∑ d ∣ n φ ( d ) = n 2 →=n∑_{d|n}φ(d)=n^2 =ndnφ(d)=n2
我们惊喜的发现,似乎配对了!!!
得:
S ( n ) = ∑ i = 1 n i 2 − ∑ d = 2 n d ⋅ S ( ⌊ n d ⌋ ) S(n)=∑_{i=1}^ni^2−∑_{d=2}^nd⋅S(⌊{n\over d}⌋) S(n)=i=1ni2d=2ndS(dn)
对于这个式子,我们前面可以利用平方和的公式 O ( 1 ) O(1) O(1)算出结果,后面的式子利用等差数列求和公式进行整除分块。

我们可以通过以上的思路求得这个看似无法筛的积性函数的前缀和。

代码实现
我们首先先线筛出数据范围根号左右的积性函数的前缀和。再递归的实现杜教筛。特别要注意的是,杜教筛筛出的前缀和一定要存下来!!!
如果你比较的勤劳,那就去手写hash,如果你想偷懒,那就最好用stl中的unordered_map,最好不要用map,平白无故多个log的复杂度,何必呢…
还有一点,一定要记得取模!!!以及,判断要不要开long long,搞不好你TLE就是因为取模去多了,或者long long开多啦!

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int maxx = 10000001 * 2;
bool isprime[maxx];
int prime[maxx/10];
int mu[maxx];
int countp;
map<long long,int> mp;
void Get_mu(int maxn)  //求莫比乌斯函数
{
    memset(isprime,1,sizeof(isprime));
    isprime[1] = true;
    mu[1] = 1;
    for(int i=2; i<=maxn; i++)
    {
        if(isprime[i])
            prime[++countp] = i, mu[i] = -1;
        for(int j=1; i*prime[j]<=maxn&&j<=countp; j++)
        {
            int t = i * prime[j];
            isprime[t] = false;
            if(!(i%prime[j]))
            {
                mu[t] = 0;
                break;
            }
            else mu[t] = -mu[i];
        }
    }
}
long long n,m;
long long nn,top;
long long ans;
int get(long long x)
{
    int sum = 0;
    for(long long i=2; i<=x; i++)
    {
        long long zz = x/i;
        long long next = x/zz;
        if(zz <= top)
            sum += (next-i+1) * mu[zz];
        else
        {
            if(mp[zz])
                sum += (next-i+1) * (mp[zz]);
            else
                sum += (next-i+1) * get(zz);
        }
        i = next;
    }
    if(x>top)
        mp[x] = (1-sum);
    return (1-sum);
}

int main()
{
    cin>>n>>m;
    top = maxx-1;
    Get_mu(maxx-1);
    for(int i=1; i<=top; i++)
        mu[i]+=mu[i-1];
    ans = get((long long)m) - get((long long)(n-1));
    cout<<ans<<endl;
}


莫比乌斯函数

莫比乌斯函数是一个由容斥系数所构成的函数。

μ ( d ) μ(d) μ(d)的定义是:

  • d = 1 d=1 d=1时, μ ( d ) = 1 μ(d)=1 μ(d)=1
  • d = Π i = 1 k p i d=Π_{i=1}^kp_i d=Πi=1kpi p i p_i pi为互异素数时, μ ( d ) = ( − 1 ) k μ(d)=(−1)^k μ(d)=(1)k。(说直白点,就是 d d d分解质因数后,没有幂次大于平方的质因子,此时函数值根据分解的个数决定);
    只要当 d d d含有任何质因子的幂次大于2,则函数值为0.

    μ ( x ) = { 1 , x = 1 0 , x 存 在 平 方 因 子 − 1 , x 有 奇 数 个 质 因 子 ( 包 括 x 是 质 数 ) 1 , x 有 偶 数 个 质 因 子 μ(x)= \begin{cases} 1,x=1\\ 0,x存在平方因子\\ -1,x有奇数个质因子(包括x是质数)\\ 1,x有偶数个质因子\\ \end{cases} μ(x)=1x=10x1xx1x
    当然,莫比乌斯函数也有很多有趣的性质:
  • 对于任意正整数 n n n ∑ d ∣ n μ ( d ) = [ n = 1 ] 。 ∑_{d|n}μ(d)=[n=1]。 dnμ(d)=[n=1] [ n = 1 ] [n=1] [n=1]表示只有当 n = 1 n=1 n=1成立时,返回值为1;否则,值为0;(这个就是用 μ μ μ是容斥系数的性质可以证明)(PS:这一条性质是莫比乌斯反演中最常用的)
  • 对于任意正整数n,∑d|nμ(d)d=ϕ(n)n。(这个性质很奇妙,它把欧拉函数和莫比乌斯函数结合起来,或许我之后写杜教筛的学习笔记时会去证明吧)

程序实现并不难,求 μ ( x ) μ(x) μ(x)

  1. 打表:
//线性筛法求莫比乌斯函数
bool check[MAX+10];
int prime[MAX+10];
int mu[MAX+10];
void Moblus()
{
    memset(check,false,sizeof(check));
    mu[1] = 1;
    int tot = 0;
    for(int i = 2; i <= MAX; i++)
    {
        if( !check[i] )
        {
            prime[tot++] = i;
            mu[i] = -1;
        }
        for(int j = 0; j < tot; j++)
        {
            if(i * prime[j] > MAX)
                break;
            check[i * prime[j]] = true;
            if( i % prime[j] == 0)
            {
                mu[i * prime[j]] = 0;
                break;
            }
            else
            {
                mu[i * prime[j]] = -mu[i];
            }
        }
    }
}
  1. 非打表:
ll getmob(ll a)
{
    ll x=a,tmp=a;
    int cnt=0,now=0;
    for(ll j=2; j*j<=x; j++)
    {
        now=0;
        if(x%j==0)
        {
            while(x%j==0)
                now++,x/=j;
            if(now>1)
                return 0;
            cnt++;
        }
    }
    if(x!=1)
        cnt++;
    return (cnt&1)?-1:1;
}

莫比乌斯反演

莫比乌斯反演是数论中的重要内容,在许多情况下能够简化运算。

我们考虑以下列函数:
F ( n ) = ∑ d ∣ n f ( d ) F(n)=\sum_{d|n}f(d) F(n)=dnf(d)
可推导得:
f ( n ) = ∑ d ∣ n μ ( d ) F ( ⌊ n d ⌋ ) f(n)=\sum_{d|n}μ(d)F(⌊{n\over d}⌋) f(n)=dnμ(d)F(dn)
这就称作莫比乌斯反演定理。

莫比乌斯反演证明

莫比乌斯反演的证明有两种方式。
定义证明方法:
∑ d ∣ n μ ( d ) F ( ⌊ n d ⌋ ) \sum_{d|n}μ(d)F(⌊{n\over d}⌋) dnμ(d)F(dn)
= ∑ d ∣ n μ ( d ) ∑ i ∣ ⌊ n d ⌋ f ( i ) ( 1 ) =\sum_{d|n}μ(d)\sum_{i|⌊{n\over d}⌋}f(i)(1) =dnμ(d)idnf(i)1
= ∑ i ∣ n f ( i ) ∑ d ∣ ⌊ n i ⌋ μ ( d ) ( 2 ) =\sum_{i|n}f(i)\sum_{d|⌊{n\over i}⌋}μ(d)(2) =inf(i)dinμ(d)2
n i = 1 {n\over i}=1 in=1,即 n = i n=i n=i时,(2)式才不为0。所以(2)式只剩下 f ( n ) f(n) f(n)一项了。
= f ( n ) =f(n) =f(n)
莫比乌斯反演还有另外的一种形式,当F(n)和f(n)满足:
F ( n ) = ∑ n ∣ d f ( d ) F(n)=\sum_{n|d}f(d) F(n)=ndf(d)
可以推出:
f ( n ) = ∑ n ∣ d μ ( d n ) F ( d ) f(n)=\sum_{n|d}μ({d\over n})F(d) f(n)=ndμ(nd)F(d)

莫比乌斯反演公式总结

约数的莫比乌斯反演:
若: f ( n ) = ∑ d ∣ n g ( d ) f(n)=\sum_{d|n}g(d) f(n)=dng(d)
则: g ( n ) = ∑ d ∣ n μ ( d ) f ( n d ) g(n)=\sum_{d|n}μ(d)f({n\over d}) g(n)=dnμ(d)f(dn)
倍数的莫比乌斯反演:
若: f ( n ) = ∑ n ∣ d g ( d ) f(n)=\sum_{n|d}g(d) f(n)=ndg(d)
则: g ( n ) = ∑ n ∣ d μ ( d n ) f ( d ) g(n)=\sum_{n|d}μ({d\over n})f(d) g(n)=ndμ(nd)f(d)


借鉴自:https://www.cnblogs.com/peng-ym/p/8647856.html


  1. [积性函数百度百科]
    (https://baike.baidu.com/item/积性函数/8354949?fr=aladdin) ↩︎

  2. 莫比乌斯百度百科 ↩︎

  3. [狄利克雷卷积百度百科]
    (https://baike.baidu.com/item/狄利克雷乘积/18903903?fr=aladdin) ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值