扩展欧几里得

扩展欧几里得算法求逆元 扩展欧几里得算法应该是最优的求逆元算法之一,他和费马小定理具有同样的时间复杂度O(log(n))O(log(n))O(log(n)),但是费马小定理需要模数为质数,扩展欧几里得算法则不需要。 逆元定义 若aaa与ppp互素,则满足(a×x)modp=1(a\times x) mod p=1(a×x)modp=1的xxx为aaa的逆元。 显然,有(k×p+1)modp=1(k\times p+1) mod p=1(k×p+1)modp=1(kkk为任意常数),又因为(a×x)modp=1(a\times x) 阅读详情

我在很久很久以前写过这篇文章但是因为自己特别菜当时不会 LaTeX \LaTeX LATE​X,而且一些地方理解不够深入现在来做一下简单修改

扩展欧几里得算法( e x g c d exgcd exgcd)可以用来求下面这个关于 x , y x,y x,y的不定方程的最小整数解
a x + b y = gcd ⁡ ( a , b ) ax+by=\gcd(a,b) ax+by=gcd(a,b)

我们回忆一下,我们之前使用辗转相除法求 gcd ⁡ \gcd gcd的过程
当我们辗转到 b 0 = 0 b_0=0 b0​=0的时候,那么这个时候的 a 0 = gcd ⁡ ( a , b ) a_0=\gcd(a,b) a0​=gcd(a,b)
那么由于满足
a 0 x 0 + b 0 y 0 = gcd ⁡ ( a , b ) a_0x_0+b_0y_0=\gcd(a,b) a0​x0​+b0​y0​=gcd(a,b)
显然 x 0 = 1 , y 0 = 0 x_0=1,y_0=0 x0​=1,y0​=0
那么初值我们就可以确定了
接下来考虑回溯的时候如何更新 x , y x,y x,y

根据迭代的方法,我们应该有一个等式
a 2 x 2 + b 2 y 2 = a 1 x 1 + b 1 y 1 = gcd ⁡ ( a , b ) a 2 x 2 + b 2 y 2 = b 2 x 1 + ( a 2   m o d   b 2 ) y 1 a 2 x 2 + b 2 y 2 = b 2 x 1 + ( a 2 − ⌊ a 2 b 2 ⌋ b 2 ) y 1 a 2 x 2 + b 2 y 2 = b 2 x 1 + a 2 y 1 − ⌊ a 2 b 2 ⌋ b 2 y 1 ( x 2 − y 1 ) a 2 + ( y 2 − x 1 + ⌊ a 2 b 2 ⌋ y 1 ) b 2 = 0 ∵ a 2 , b 2 ≠ 0 ∴ x 2 − y 1 = 0 , y 2 − x 1 + ⌊ a 2 b 2 ⌋ y 1 = 0 ∴ x 2 = y 1 , y 2 = x 1 − ⌊ a 2 b 2 ⌋ y 1 \begin{aligned} a_2x_2+b_2y_2&=a_1x_1+b_1y_1=\gcd(a,b) \\ a_2x_2+b_2y_2&=b_2x_1+(a_2\bmod b_2)y_1 \\ a_2x_2+b_2y_2&=b_2x_1+(a_2-\lfloor\frac{a_2}{b_2}\rfloor b_2)y_1 \\ a_2x_2+b_2y_2&=b_2x_1+a_2y_1-\lfloor\frac{a_2}{b_2}\rfloor b_2y_1 \\ (x_2-y_1)a_2&+(y_2-x_1+\lfloor\frac{a_2}{b_2}\rfloor y_1)b_2=0\\ \because a_2,b_2&\neq 0 \\ \therefore x_2-y_1=0,&y_2-x_1+\lfloor\frac{a_2}{b_2}\rfloor y_1=0 \\ \therefore x_2=y_1,&y_2=x_1-\lfloor\frac{a_2}{b_2}\rfloor y_1 \end{aligned} a2​x2​+b2​y2​a2​x2​+b2​y2​a2​x2​+b2​y2​a2​x2​+b2​y2​(x2​−y1​)a2​∵a2​,b2​∴x2​−y1​=0,∴x2​=y1​,​=a1​x1​+b1​y1​=gcd(a,b)=b2​x1​+(a2​modb2​)y1​=b2​x1​+(a2​−⌊b2​a2​​⌋b2​)y1​=b2​x1​+a2​y1​−⌊b2​a2​​⌋b2​y1​+(y2​−x1​+⌊b2​a2​​⌋y1​)b2​=0​=0y2​−x1​+⌊b2​a2​​⌋y1​=0y2​=x1​−⌊b2​a2​​⌋y1​​
然后就很显然了,我们在之前求 gcd ⁡ \gcd gcd的代码上简单修改就可以了好像还不少
然后注意我们最后求的是 x x x的最小整数解,也就是说 x x x不保证是一个正数
要加回来
下面给出 e x g c d exgcd exgcd的核心代码

ll exgcd(ll a,ll b,ll &x,ll &y){
    if(!b){
        x=1,y=0;
        return a;
    }
    int _gcd=exgcd(b,a%b,x,y);
    ll z=y;
    y=x-a/b*y;
    x=z;
    return _gcd;
}
扩展欧几里得求数字逆元 扩展欧几里得求数字逆元python求公约数的代码python扩展欧几里得求逆元代码C++扩展欧几里得求逆元代码   欧几里得算法大家应该都听说过,是一个求最大公约数的算法,又叫辗转相除法。大致算法的思路就是,要求a,b两个数的最大公约数,用其中一个数对另一个数取余数,不妨记为b%a,然后让下一轮,b变为a,a再变为上一轮b%a的余数继续重复这样的操作。   这里简单给出一个证明。设最大公约数为t,... 阅读详情

相关推荐

dell r630 配置raid_DELL服务器RAID配置图文教程

名称解释:Disk Group:磁盘组,这里相当于是阵列,例如配置了一个RAID5,就是一个磁盘组VD(Virtual Disk): 虚拟磁盘,虚拟磁盘可以不使用阵列的全部容量,也就是说一个磁盘组可以分为多个VDPD(Physical Disk): 物理磁盘HS:Hot Spare 热备Mgmt:管理【一】创建逻辑磁盘1、按照屏幕下方的虚拟磁盘管理器提示,在VD Mgmt菜单(可以通过CTRL+P...

weixin_33253741的博客 3510

欧式距离、标准化欧式距离、马氏距离、余弦距离

#### 目录  - 欧氏距离  - 标准化欧氏距离  - 马氏距离  - 夹角余弦距离  - 汉明距离  - 曼哈顿(Manhattan)距离 1.欧式距离 欧式距离源自N维欧氏空间中两点x1,x2间的距离公式:  d=∑i=1N(x1i−x2i)2−−−−−−−−−√ 2.标准化欧式距离 引入标准化欧式距离的原因是一个数据xi的各个维度之间

lwq1026的博客 4886

薛定谔虚拟筛选实战:如何用PDB文件快速构建受体格点(避坑指南)

本文提供了薛定谔虚拟筛选实战指南,聚焦于如何从PDB文件快速、精准地构建受体格点。文章详细解析了可变残基的理性处理策略、基于配体尺寸的盒子量化设置方法,并分享了高级约束与排除体积的实战技巧,旨在帮助用户避开常见陷阱,提升虚拟筛选的成功率与效率。

weixin_28419039的博客 252

拓展欧几里得(Extend Euclid)

最近刚学LaTeX, 发现没有写拓展欧几里得的总结,这里拿这个练练手。 LaTeX源码如下: 效果直接生成pdf如下图:

Sothan 637

macOS Monterey官方镜像高速下载指南(附迅雷链接+兼容性清单)

本文提供macOS Monterey官方镜像的高速下载指南,重点介绍利用迅雷等工具加速下载官方安装包的有效方法。同时,详细列出了系统兼容性清单,帮助用户在下载前确认设备支持,并分享了从下载、验证到安全安装的完整流程与常见问题解决方案。

j7k8l的博客 2169

2025年度工业级3D全景相机技术解析选型参考:国产品牌的技术突围与市场格局

本文分析了工业级3D相机在智慧城市和建筑数字化中的应用。通过对比国内外主流设备的技术参数和应用场景,发现国产品牌如众趣科技在性价比和本地化服务方面具有优势,尤其适合大型空间扫描项目;而国际品牌如Faro、Leica则在精度和可靠性上保持领先。建议根据项目需求(如测距范围、精度要求、预算)进行设备选型,综合考虑扫描效率、数据处理能力和系统兼容性。国产品牌已在国内大型基建项目中展现出竞争力,国际品牌则更适合高精度逆向工程和国际化项目。

gxdtgsy的博客 1072

向量距离汇总(连续值与离散值),Latex与Python实现

文章目录1. 闵可夫斯基距离 Minkowski Distancep=1时 曼哈顿距离 Manhattan Distancep=2时 欧氏距离 Euclidean Distance标准化欧氏距离Standardized Euclidean Distancep->∞ 切比雪夫距离 Chebyshev Distance2.余弦相似度 Cosine Similarity修正余弦相似度 Adjusted Cosine Similarity3.皮尔逊线性相关系数 Pearson Correlation Coef

呆萌的代Ma 2301

FRM模型五:Brinson业绩归因

利用Brinson对基金组合业绩进行归因分析。

stonesssssss的博客 3003

Latex常用数学公式

KaTeX渲染数学公式 https://katex.org/ KaTeX可渲染复杂的数学公式、表格、化学分子式、五线谱、棋谱、电路图等。 可视化公式编辑器的神器: http://www.wiris.com/editor/demo/en/developers.

michael_linux的博客,一个小小小学生。滴水穿石,步步为营,只为那刹那芳华。 8487

数字IC后端设计实战:从floorplan到powerplan的优化策略

本文深入探讨了数字IC后端设计中从Floorplan到Powerplan的核心优化策略。文章强调了Floorplan作为布局基础的重要性,并详细解析了Powerplan规划,特别是针对低功耗设计中MTCMOS的应用与IR Drop分析。通过实战经验分享,提供了从模块摆放到电源网络构建、再到IR Drop问题层层递进的解决方案,旨在帮助后端工程师构建稳健高效的芯片物理设计。

weixin_28338005的博客 346

ue 打包linux程序 在windows系统 2026

ue 打包linux程序 在windows系统 2026

jacke121的专栏 370

欧几里得空间与希尔伯特空间

       多年以前学信号与系统的时候就听说过希尔伯特空间,但是一直不清楚这究竟是个什么东西,然而它却老是时不时在你学得最欢的时候冒出来搞得人一头雾水,于是今天专

我的学习笔记 3万+

Mastercam软件二次开发:使用C#进行Mastercam二次开发

C#(发音为“C Sharp”)是一种现代、面向对象的编程语言,由微软开发,首次发布于2000年。它结合了C和C++的强大功能,同时引入了Java的垃圾回收机制,使得C#在开发效率和运行性能之间找到了一个良好的平衡点。C#的设计目标是提高开发者的生产力,它支持多种编程范式,包括面向对象、泛型、委托和事件等,这使得它成为开发Windows应用程序、Web应用程序、游戏(尤其是使用Unity引擎)和企业级应用的理想选择。

kkchenjj的博客 2211

扩展欧几里得算法(求逆元)

扩展欧几里得算法(求逆元)总结 1、在RSA算法生成私钥的过程中涉及到了扩展欧几里得算法(简称exgcd),用来求解模的逆元。 2、首先引入逆元的概念: 逆元是模运算中的一个概念,我们通常说 A 是 B 模 C 的逆元,实际上是指 A * B = 1 mod C,也就是说 A 与 B 的乘积模 C 的余数为 1。可表示为 A = B^(-1) mod C。 打个比方,7 模 11 的逆元,即:7^(-1) mod 11 = 8,这是因为 7 × 8 = 5 × 11 + 1,所以说 7 模 1.

zw201909250425的博客 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

扩展欧几里得算法详解

欧几里得算法,扩展欧几里得算法,欧几里得算法解二元一次方程组,欧几里得算法求乘法逆元。

点滴技术 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

扩展欧几里得算法及求逆元

师父的扩展欧几里得算法详细博客师父哟 大神的求逆元详细博客大神的呢 gcd(a,b)即求a和b的最大公约。用辗转相除法求得。 扩展欧几里得算法是欧几里得算法(又叫辗转相除法)的扩展。除了计算a、b两个整数的最大公约数,此算法还能找到整数x、y(其中一个很可能是负数)。通常谈到最大公因子时, 我们都会提到一个非常基本的事实: 给予二整数 a 与 b, 必存在有整数 x 与 y 使得ax + b...

Greenary的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

扩展欧几里得算法

数论中的欧几里得及其证明,扩展欧几里得算法及其证明,代码实现,应用。

qq_34603425的博客 1111

扩展欧几里得算法——AcWing.877扩展欧几里得算法

扩展欧几里得算法是用来在已知整数 a、b 的情况下,求解一组整数 x、y 使得 ax + by = gcd(a, b)(gcd 表示最大公约数)。

u014114223的博客 1465

Acwing 扩展欧几里得算法

扩展欧几里得,玩的真花~

qq_43060884的博客 1027

扩展欧几里得算法:求解乘法逆元

扩展欧几里得算法:求解乘法逆元

aw2371的博客 1398

扩展欧几里得专题

最近一周都在刷扩展欧几里得、逆元、整除之类的数论专题,颇有心得,决定写一发。虽然说是扩展欧几里得专题,但是其实里面加了几道普通数论题,不想做的可以跳过。因为我是随便找的题目,所以题目的难度不是按照我的排版来的(前面的题目可能很难,后面的题目可能很简单),请读者见谅。 对于数论的基础知识和扩展欧几里得的算法,我这里不再赘述,不会的请参考这位大大的博客,我觉得写得非常不错。 http://

shengtao96的专栏 6212

扩展欧几里得算法推导

扩展欧几里得算法推导过程 1 从简单的两个数a和b开始 欧几里得算法是用来求a与b的最大公约数的算法,也称辗转相除法,即以除数与余数反复做除法运算,当余数为0时,除数即为a与b的最大公约数 已知a和b,假设g为a与b的最大公约数,所以a与b都可以整除g, 即a=g * x ,b=g * y。 我们又知道a%b可以求a与b的余数 不会吧不会吧不会还有人不知道 它的实质为 a-(a/b)*b 所以a与b的除数与余数即为 b 与 a-(a/b)*b 把 a=gx,b=gy ,代入上面的式子,可以得到 g*y 与

qq_49662108的博客 1771

扩展欧几里得算法的全方位探索

扩展欧几里得算法的全方位探索

resco的博客 916
上一篇: [六省联考2017]相逢是问候
下一篇: P1272 重建道路
NephrenRuqInsania
博客等级 码龄8年 20粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值