2021牛客暑期多校训练营2 - J - Product of GCDs ( 分解质因数 + 组合数 + 欧拉降幂 )

DRM驱动架构浅析-上(DRM基础概要与U-Boot阶段驱动解析) 本文主要探讨了Rockchip平台的DRM显示驱动架构及其在U-Boot阶段的实现。 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

给一个集合,求所有大小为 k 的子集的 gcd 之积

思路

枚举所有 gcd ,对于每个当前枚举的 gcd = i,统计它的倍数出现的个数 num,i 的出现的倍数形成集合A。
gcd = i 且大小为 k 的子集都是 A 的子集,A 的大小为 k 的子集共 c ( num,k ) 个,但不都是所有子集的gcd 都等于 i , 还可能等于 i 的倍数。
所以我们在计算 gcd = i 且大小为 k 的子集的个数的时候还要去除 gcd =( i 的倍数 ) 的子集的影响。
这里可以采用从大到小枚举 gcd 的方法,对于每个 i ,用 sum 数组记录 gcd = i 的且长度为 k 的集合数目,每次枚举一个 i 后,都减去 gcd =( i 的倍数 )的集合的个数( 即 sum [ i 的倍数 ] ),即可得到gcd 为 i 的集合的个数。
最后的答案应该是 (ps:图片来源)
考虑到 k i k_i ki​ 可能很大,对此我们对它进行欧拉降幂:在这里插入图片描述
φ ( m ) \varphi(m) φ(m) 为 m 的欧拉函数值,这里 m 即 p ,考虑到 p 很大,我们用 pollard_rho 质因数分解得到 p 的所有因子再计算 p 的欧拉函数值( 题解说 std 暴力分解 p 也可以,不过可能会卡常 )。
同时由于最后统计答案多次用到组合数,可以预处理组合数,因为 φ ( m ) \varphi(m) φ(m) 不一定为质数,同时 k 不大,所以我们可以用杨辉三角 O(nk) 递推组合数。

代码
//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e5+10;
const int mod=998244353;
const double eps=1e-9;
const int N=5e3+10;
  
//inline int read()
//{
//    int k = 0, f = 1 ;
//    char c = getchar() ;
//    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
//    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
//    return k * f ;
//}
 
const int S=8;//随计算法判定次数一般8-10次就够了
 
//计算 ret=(a*b)%c    a,b,c<2^63
ll mult_mod(ll a,ll b,ll c)
{
    a%=c;
    b%=c;
    ll ret=0;
    ll tmp=a;
    while(b)
    {
        if(b&1)
        {
            ret+=tmp;
            if(ret>c) ret-=c;//直接取模慢很多
        }
        tmp<<=1;
        if(tmp>c) tmp-=c;
        b>>=1;
    }
    return ret;
}
//计算ret=(a^n)%mod
ll pow_mod(ll a,ll n,ll mod)
{
    ll ret=1;
    ll temp=a%mod;
    while(n)
    {
        if(n&1) ret=mult_mod(ret,temp,mod);
        temp=mult_mod(temp,temp,mod);
        n>>=1;
    }
    return ret;
}
//通过a^n(n-1)=1(mod n)来判断 n 是不是素数
//n-1=x * 2^t 中间使用二次判断
//是合数返回true ,不一定是合数返回false
bool check(ll a,ll n,ll x,ll t)
{
    ll ret=pow_mod(a,x,n);
    ll last=ret;
    for(int i=1;i<=t;i++)
    {
        ret=mult_mod(ret,ret,n);
        if(ret==1&&last!=1&&last!=n-1) return true;
        last=ret;
    }
    if(ret!=1) return true;
    else return false;
}
// Miller_Rabin算法进行素数测试
//速度快可以判断一个 < 2^63 的数是不是素数
//是素数返回true,(可能是伪素数)
//不是素数返回false
bool Miller_Rabin(ll n)
{
    if(n<2) return false;
    if(n==2) return true;
    if((n&1)==0) return false;//偶数
    ll x=n-1;
    ll t=0;
    while((x&1)==0)
    {
        x>>=1;
        t++;
    }
    srand(time(NULL));
    for(int i=0;i<S;i++)
    {
        ll a=rand()%(n-1)+1;
        if(check(a,n,x,t)) return false;
    }
    return true;
}
// pollard_rho算法进行质因素分解
set<ll>factor;//质因数分解结果 (刚返回时是无序的)
//int tol;//质因数的个数 编号0~tol-1;
ll gcd(ll a,ll b)
{
    ll t;
    while(b)
    {
        t=a;
        a=b;
        b=t%b;
    }
    if(a>=0) return a;
    else return -a;
}
//找出一个因子
ll pollard_rho(ll x,ll c)
{
    ll j=1,k=2;
    srand(time(NULL));
    ll x0=rand()%(x-1)+1;
    ll y=x0;
    while(1)
    {
        j++;
        x0=(mult_mod(x0,x0,x)+c)%x;
        ll d=gcd(y-x0,x);
        if(d!=1&&d!=x) return d;
        if(y==x0) return x;
        if(j==k)
        {
            y=x0;
            k+=k;
        }
    }
}
//对n进行素因子分解,存入vector,k设置为107左右即可
void findfac(ll n,int k)
{
    if(n==1) return ;
    if(Miller_Rabin(n))
    {
        factor.insert(n);
        return ;
    }
    ll p=n;
    int c=k;
    while(p>=n) p=pollard_rho(p,c--);
    findfac(p,k);
    findfac(n/p,k);
}
 
int t,n,k,x;
int cnt[maxn];//记录 i 出现的次数
ll p;//模数,这里模数不一定为质数
ll c[40010][40];//组合数
ll sum[maxn];//记录 gcd 是 i 的且长度为 k 的集合数目
 
int main( )
{
    scanf("%d",&t);
    while(t--)
    {
        int maxx=0;
        scanf("%d%d%lld",&n,&k,&p);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&x);
            cnt[x]++;
            maxx=max(maxx,x);
        }
        //pollard_rho质因数分解得到 p 的因子数组factor
        factor.clear();
        findfac(p,107);
        ll phi=p,ans=1;
        for(auto x:factor)//得到p对应的欧拉函数值,即小于或等于 p 且与 p 互质的正整数个数
            phi=phi/x*(x-1);
        //组合数预处理(杨辉三角)
        for(int i=1;i<=n;i++)
        {
            c[i][0]=1;
            c[i][i]=1;
            for(int j=1;j<i&&j<=k;j++)
            {
                c[i][j]=c[i-1][j]+c[i-1][j-1];
                while(c[i][j]-phi>=phi) c[i][j]-=phi;
                //这里的组合数,在后面作为指数计入答案,可能会很大,要进行欧拉降幂 
            }
        }
        for(int i=maxx;i>=1;i--)//倒序便于消除 gcd是i的倍数的集合 对 gcd是i的集合 数目的影响 
        {
            int num=0;
            for(int j=i;j<=maxx;j+=i)
                num+=cnt[j];// i 的倍数的个数
            sum[i]=c[num][k];
            for(int j=i+i;j<=maxx;j+=i)
                sum[i]-=sum[j];//消除 gcd是i的倍数的集合 对 gcd是i的集合 数目的影响 
            //在后面作为指数计入答案,可能会很大,要进行欧拉降幂 
            while(sum[i]-phi>=phi) sum[i]-=phi;
            if(sum[i]<0)
                sum[i]=(sum[i]%phi+phi)%phi;
            ans=mult_mod(ans,pow_mod(i,sum[i],p),p);
        }
        printf("%lld\n",ans);
        for(int i=0;i<=maxx;i++) cnt[i]=sum[i]=0;
    }
    return 0;
}
S7-200SMART通过表格指令实现模拟量信号滑动平均值滤波的具体方法 阅读详情

相关推荐

中国30米分辨率城市建成区数据集 (1972-2023年)

全国城市建成区空间分布数据(1972-2023年),利用Google Earth Engine平台,基于Landsat系列遥感影像提取了1972–2023年城市不透水面,后经过不透水面聚集密度计算方法计算了不透水面聚集密度,通过阈值划分提取了城市建成区,并设置了建成区面积阈值,去除了噪点,获取了全国城市建成区空间分布数据集。该提取能准确刻画城市形态,提取精度高,保持了建成区的完整性。数据集包括41期数据,1972年,1978年,1985-2023年逐年,分辨率为30米,有栅格和矢量两种格式。

地球资源数据云的官方博客 5824

2017杭电多校第四场1003 Counting Divisors (分解质因数) hdu 6069

Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 1374    Accepted Submission(s): 495 Problem Description In mat

不积跬步无以至千里 655

基于STM32的馆藏文物保存环境监测系统设计与实现

针对馆藏文物保存环境中温湿度、光照、有害气体等参数波动易导致文物损坏的问题,本文设计了一种基于STM32微控制器的馆藏文物保存环境监测系统。该系统以STM32L431RCT6为核心,集成高精度传感器实现多参数实时采集,通过有线与无线结合的通信方式构建监测网络,具备数据存储、异常预警、远程监控等功能。测试结果表明,系统温湿度测量精度分别达±0.2℃、±2%RH,光照与有害气体检测误差≤5%,可满足文物保存环境的高精度监测需求,为文物保护提供科学的数据支撑。

m0_74026776的博客 1542

牛客网分解质因数

题目:牛客网https://www.nowcoder.com/practice/20426b85f7fc4ba8b0844cc04807fbd9?tpId=40&tqId=21338&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking 首先讲一下如何判断一个数是质数,传统的做法是将数n一直...

qq_36575363的博客 714

STC8H8K64U ADC采样实战:从蜂鸣器控制到电压测量(附完整代码)

本文以STC8H8K64U单片机为核心,通过两个实战案例详细讲解ADC采样的应用。首先介绍如何利用ADC采样值动态控制蜂鸣器响度,实现模拟PWM效果;其次深入探讨高精度外部电压测量的方法,包括硬件连接、两点校准技巧以及软件滤波,旨在帮助开发者从理论到实践全面掌握ADC功能。

weixin_29159441的博客 558

踩坑记录:Clawdbot 对接 Minimax 报错 “401 token is unusable (1004)“ 的终极解决方案

如果你也在配置 Clawdbot 对接 Minimax 模型时,明明 API Key 是新申请的,却死活报错 `401 Unauthorized`,错误码 `1004`,提示 `token is unusable`——那么恭喜你,来对地方了。

hampeter的博客 2001

2021牛客暑期多校训练营2 J-Product of GCDs(数论+计数)

#include<bits/stdc++.h> using namespace std; using ll=long long; template <class T=int> T rd() { T res=0; char ch=getchar(); while(!isdigit(ch)) ch=getchar(); while( isdigit(ch)) res=(res<<1)+(res<<3)+(ch^48),ch=getc

Fighting_Peter的博客 363

Error relaunching VirtualBox VM process:5错误解决

前几天在重新使用VirtualBox的时候出现了一个挺恶心的错误,如图 百度了好久没有找到合适的解决方法。功夫不负有心人,在查阅了vb相关论坛时发现了大牛对此问题的诸多解决方案。下面我把此论坛的内容总结一下,希望对大家有帮助。 论坛链接:Diagnosing VirtualBox Hardening Issues 时间不足的小伙伴可以直接看 解决方法 造成这个错误的主要原因是,windows操作系统与oracle vb的不兼容。有两个方面,一是非官方windows系统中包含了一些没有签名的d

JaCenz的博客 3万+

2021牛客多校 Product of GCDs(拓展欧拉定理+欧拉函数)

题目传送门 大意 给一个数组,求数组中所有大小为k的子集的gcd的乘积。 样例: 5 2 20040220 2 4 8 12 14 这个就是从第二行找到k=2个数,(选出来,然后将这些组的gcd乘积求出来) 2-4:2 2-8:2 2-12:2 2-14:2 4-8:4 4-12:4 4-14:2 8-12:4 8-14:2 12-14:2 乘起来,然后对最后答案20040220取模 结果就是8192 思路 其实就是根据素数,来计算它对整体答案的贡献,来找它的倍数的大小,最后计算贡献: 比如现在给你一组数它

m0_51841071的博客 346

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

ACGkaka的博客 2万+

施耐德 Modicon M580 ePAC 项目实战:从硬件选型到 Control Expert V15 组态

本文详细解析了施耐德 Modicon M580 ePAC 在工业自动化项目中的实战应用,从硬件选型到 Control Expert V15 组态的全流程。重点介绍了水处理站控制系统的硬件配置、网络架构设计、软件安装授权及程序框架开发,帮助工程师高效实施中大型控制系统项目。

weixin_33701617的博客 326

分解质因数 与 找出第几个丑数(leetcode与牛客网)

一、分解质因数 1质数:除了1和它本身以外不再有其他因数的自然数。 2.质因数分解:可以写成几个质数相乘的形式,如30=2×3×5 3.代码实现: 3.1 如果val不是质数,说明可以因式分解 3.2如果i不是质数,就i++直到找到 3.3/找到之后 判断是否能被val整除 不行的话 只能找下一个质数 int val = 90; int i = 2; std::vector<int> Arr; while (!prime(val)) { while (!prime..

qq_20585527的博客 1014

YOLO模型在STM32微控制器上的部署:1.98M参数如何塞进嵌入式设备?

<think>我们根据内容生成不超过150字的摘要。内容主要是关于YOLO模型在STM32微控制器上的部署,包括STM32N6 NPU、模型量化、工具链、开源方案和架构设计。摘要需要简洁概括主要点。 字数限制:≤150字。需要包含关键信息:STM32N6运行YOLO,困难,方案(NPU、INT8量化、工具链),性能(34 FPS 9.4mJ)。结尾可能提到开源和生态。 写中文摘要。注意不超过150字。</think>本文探讨YOLO模型在STM32微控制器上的部署。集成NPU的STM32N6搭配轻量化YOL

2601_95807009的博客 255

2021牛客暑期多校训练营2 J Product of GCDs

2021牛客暑期多校训练营2 J Product of GCDs 题目链接 题意 给定一个集合S,在S中找出元素个数为k的子集合T,计算T中所有元素的GCD(最大公约数),将所有的T得到的GCD乘在一起得到结果,结果对P取模。 思路 计算每一个可能的GCDg对最终答案的贡献。 考虑元素个数为k且GCD为g的子集合T,T里面的所有元素TiT_iTi​一定都是g的倍数。 注意 如果TiT_iTi​是g×x(x>1)g \times x(x>1)g×x(x>1)的倍数,那么GCD的值就是g×xg

Moyan的博客 315

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

2021牛客暑期多校训练营2 J Product of GCDs(数学)

题目链接:点击这里 题目大意: 给定一个整数集合,求所以大小为 kkk 的子集的 gcd⁡\gcdgcd 之积 题目分析: 我们发现求的是所有 gcd⁡\gcdgcd 的乘积,所以我们可以单独考虑每一个数字 ggg 的贡献,若有 xxx 个数是 ggg 的倍数, yyy 个数是 k⋅g(k≥1)k·g(k\ge 1)k⋅g(k≥1) 的倍数,那么 ggg 产生的贡献就是 gCx−ykg^{C_{x-y}^k}gCx−yk​ 。在操作容斥时,我们可以先用 CxkC_x^kCxk​ 减去 ∑g∣iCdpik\

羊驼的博客 252

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【训练题51:数学数论 | 容斥】Product of GCDs | 2021牛客暑期多校训练营2

题意 Product of GCDs | 2021牛客暑期多校训练营2 有一个多重集合 SSS,给你一个 kkk ,你需要求出: (∏T⊆S,∣T∣=kgcd⁡{T}) mod P (\prod_{T\subseteq S,|T|=k} \gcd\{T\} )\bmod P (T⊆S,∣T∣=k∏​gcd{T})modP 其中 gcd⁡{T}\gcd\{T\}gcd{T} 表示这个集合中所有数的 gcdgcdgcd 1≤∣S∣≤400001\le |S|\le 400001≤∣S∣≤40000 1≤k≤m

溢流眼泪的博客 298

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

J. Product of GCDs(莫比乌斯反演)(2021牛客暑期多校训练营2)

Product of GCDs ∏d=1nd∑[gcd⁡(s1d,s2d,…,skd)=1]∏d=1nd∑i=1ndμ(i)Cf[id]k \prod_{d = 1} ^{n} d ^{\sum[\gcd(\frac{s_1}{d}, \frac{s_2}{d}, \dots, \frac{s_k}{d}) = 1]}\\ \prod_{d = 1} ^{n} d ^{\sum\limits_{i = 1} ^{\frac{n}{d}} \mu(i) C_{f[id]} ^{k}}\\ d=1∏n​d∑[g

lifehappy 394

牛客挑战赛 46 B最下的指数(分解质因子,分类讨论)

文章目录总结 题目链接:最小的指数 题意: 牛妹手里捧着 T 个数,对于每个数x,将其分解质因数,并输出它的质因子指数的最小值。 形式化地,对于数x = p1^a1 * p2^a2 … pk^ak,输出min{a1,a2…ak}。 1<=T<=100000 , 1<=n<=1018 题解: 首先想到素数的话min1 米勒罗宾素数检测(Miller-Rabin) 然后min<=64 然后指数<=sqrt(1e18) 然后假设min6就可以小范围素数筛搞搞 T=1e5 把1

quinn18的博客 515

牛客练习赛14-A-n的约数----分解质因数

链接:点击打开链接来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld题目描述t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数输入描述:第一行一个正整数t之后t行,每行一个正整数n输出描述:输出t行,每行一个整数,表示答案示例1输入5 13 9 1 13 16输出6 4 1...

w504007124的博客 508

牛客小白月赛23 B 阶乘题解(二分+质因数分解)

题目链接 题目大意 给定一个正整数p,求一个最小的正整数 n,使得 n! 是 p 的倍数 题目思路1 看到此题还是会想到质因数分解,但是没想到是需要p和n!都要质因数分解。可以把p分解的因子和次数用 一个pair储存。然后可以发现其实这个题目是满足二分条件的。 注意n质因数分解时那个变量j要设为long long 。因为可能会爆int,有关i,j在for循环里面是乘法操作的一定要注意很容易wa 代...

hunxuewangzi的博客 785

2021牛客多校第二场 J——Product of GCDs

题目大意 给你 nnn 个数,让你从中挑出 kkk 个数组成一个集合,设第 iii 个集合的最大公约数是 gig_igi​,对于所有集合,求 ∏gi\prod g_i∏gi​ 解题思路 我们可以枚举 gig_igi​,显然 gig_igi​ 是从 1 到最大值,,设 gig_igi​ 的倍数有 mmm 个数,那么我们算 gig_igi​ 的贡献是 CmkC_m^kCmk​ 吗?,其实不是,因为 gig_igi​ 的倍数组成的集合中,可能最大公约数是 gig_igi​ 的倍数,所以我们要减去这些值才是正确的。

yezi_coder的博客 196

牛客—— Basic Gcd Problem(质因子分解+快速幂)

质因子分解算法 (摘自《算法笔记》) 算法原理: 对一个正整数n来说,如果它存在1和它本身之外的因子,那么一定在sqrt(n)的左右成对出现。 但是对于质因子来说:对一个正整数n来说,如果它存在[2,n]范围内的质因子,要么这些质因子全部小于等于sqrt(n),要么只存在一个大于sqrt(n)的质因子,而其他质因子全部小于等于sqrt(n)。 思路: 1.枚举1~sqrt(n)范围内的所有质因子p,判断p是否为n的因子。 如果p是n的因子,那么给fac数组中增加质因子p,并且初始化其个数为0。然后只

qq_44722533的博客 369

CA Loves GCD (动态规划求全部子集的GCD)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5656 问题描述 CA是一位热爱党和人民的好同志; 她也不可避免地喜欢GCD(最大的共同除数)。 现在,有ñ不同的数字。每次,CA将选择几个数字(至少一个),并找到这些数字的GCD。为了获得乐趣,CA将尝试每一个选择。在那之后,她想知道所有GCD的总和。 当且仅当选择中存在数字但在另一个数字中不存在时,我...

Z 679

【牛客网】质因数的个数

题目描述求正整数N(N&gt;1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。输入描述可能有多组输入数据,每组的测试数据是一个正整数N(1&lt;N&lt;10^9)输出描述对于每组测试数据,输出N的质因数的个数。样例输入120样例输出5解题思路(1)这道题可以直接打印素数表,但是要注意用sqrt(n)来降低复杂度,但是复杂度仍较高。(2)因为任何一个...

程序媛媛 688

洛谷题目目录

#1 新手村 关卡1-1 洛谷的第一个任务 超级玛丽游戏(洛谷-P1000):点击这里 A+B Problem(洛谷-P1001):点击这里 小玉买文具(洛谷-P1421):点击这里 小鱼的游泳时间(洛谷-P1425):点击这里 关卡1-2 顺序与分支 小玉家的电费(洛谷-P1422):点击这里 不高兴的津津(洛谷-P1085):点击这里 津津的储蓄计划(洛谷-P1089):点击这里 买铅笔(洛谷...

zqhf123的博客 25万+

牛客 Celestial Resort 质因数分解求最小公倍数 除法取模

题目描述 Madeline来到了Celeste山的天空度假山庄(Celestial Resort)。工作人员Oshiro先生希望Madeline住在这里,而这里却因为早就没有客人来光顾而脏乱不堪。 虽然Madeline不想留在这里,她的目标是登上Celeste山,但她不忍心看到Oshiro先生失落的样子,于是想要帮助Oshiro先生来整理天空度假山庄。 Madeline发现这里有n种书,每一种书都有无限本,第i种书的厚度是ai ,她想把这 n 种书在摆成一排,每一种书叠 b i 本,使得每一种书叠起来的高度

qq_45928501的博客 456
上一篇: 求组合数的几种方法
下一篇: CodeForces 1467B - Hills And Valleys
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值