求高精度幂数

快速幂——高精度求幂 文章目录前言一、快速幂(Fast Exponentiation)的定义:二、快速幂原理:三、常规求幂:四、简单快速求幂:四、递归快速求幂:五、位运算快速求幂:六、高精度快速求幂:六、python高精度快速求幂:七、实战演习:总结 前言 本文讲述快速幂的原理,以及用法 一、快速幂(Fast Exponentiation)的定义: 定义:快速求,取base为底数的exp次幂,即求:baseexp; 时间复杂度: O(log₂N) 二、快速幂原理: 思想:每一步都把指数分成两半,而相应的底数做平方运算。不仅能把非 阅读详情

求高精度幂数

个人信息:就读于燕大本科软件工程专业 目前大三;

本人博客:google搜索“cqs_2012”即可;

个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献;

编程语言:C++ ;

编程坏境:Windows 7 专业版 x64;

编程工具:vs2008;

制图工具:office 2010 powerpoint;

硬件信息:7G-3 笔记本;

真言

去往火焰山,炼就红色眼

题目

百炼 1001 幂运算

网址 http://bailian.openjudge.cn/practice/1001/

解法

用字符串处理。

对这个系统不是很了解,多次尝试后才发现这个系统不兼容很多东西,如下

system(“pause”);

<Windows.h>

对于输入输出控制,不能按照给的例子指定输入输出的个数,而用while(cin>>)来控制是否继续输入。

哎,一把辛酸泪。

看题:此问题是幂操作,求高精度运算,问题不难,在于细心,考虑整形溢出即可,利用字符串模拟整形运算

算法

个人算法用C++代码表示如下(代码有部分用过以前写过的程序,所以看起来比较乱,但是纯个人写的代码,没有copy)

#include<iostream>
#include <string>
using namespace std;


// 小数的幂次方
string FloatPower(string a,unsigned int b);
bool XiaoshuCheck(string a);

bool Check_all_number(string a);
// 小数乘法
string FloatMult(string a,string b);
std::pair<string,int> StandardXiaoshu(string a);
string MULT_Int(string a,string b);
bool Standardization(string &a);
string IntToChar(int i);
int CharToNumber(char c);
string ADD_Int(string a,string b);
string AddInt(string a,string b);
string SubInt(string a,string b);
char Compare(string a,string b);
char CompareXiaoshu(string a,string b);


// 小数的幂次方
string FloatPower(string a,unsigned int b)
{
	if(!a.empty() && XiaoshuCheck(a))
	{
		string result = "1";
		for(unsigned int i = b-1;i<b;i--)
		{
			result = FloatMult(a,result);
		}
		if(result[0] == '0'&&result[1] == '.')
			result = result.substr(1,result.length()-1);
		return result;

	}
	else if(!a.empty() &&! XiaoshuCheck(a))
	{
		string result = "1";
		for(unsigned int i = b-1;i<b;i--)
		{
			result = MULT_Int(a,result);
		}
		return result;
	}
}

bool XiaoshuCheck(string a)
{
	bool xiaoshu = false ;
	string b = a ;

	// 找出小数点
	for(unsigned int i=0;i<b.length();i++)
		if(b[i] == '.')
		{
			xiaoshu = true;

			// 去掉小数点后判断是否符合整数形式
			b = b.substr(0,i)+b.substr(i+1,b.length()-i-1);
			if(Check_all_number(b) != true)
				xiaoshu = false;
			break;
		}
		return xiaoshu ;
}

// 小数乘法
string FloatMult(string a,string b)
{
	// 把小数扩展成整数,然后去操作
	// (a*b)/(小数点长度之和)
	// 
	std::pair<string,int> sa = StandardXiaoshu(a);
	std::pair<string,int> sb = StandardXiaoshu(b);
	a = sa.first;
	b = sb.first;

	// a*b,得到放大结果
	string r = MULT_Int(a,b);

	// 结果是负数怎么办?把其变成正数
	bool fushu = false;
	if(r[0] == '-')
	{
		fushu = true;
		r = r.substr(1,r.length()-1);
	}

	// 结果产生很多 0,并且小数长度大于0
	unsigned int maxlength = sa.second + sb.second;
	while(r[r.length()-1] == '0' && maxlength > 0)
	{
		r = r.substr(0,r.length()-1) ;
		maxlength -- ;
	}

	// 如果结果是小数,并且小于1,前面补0
	while(r.length() <= maxlength)
	{
		r = "0" +r;
	}

	if(maxlength == 0 || Compare(r.substr(r.length()-maxlength,maxlength),"0") == '=')
		r = r.substr(0,r.length()-maxlength);
	else
		// 加上小数点
		r = r.substr(0,r.length()-maxlength)+"."+r.substr(r.length()-maxlength,maxlength);
	// 如果结果是负数,怎么办
	if(fushu == true)
		r = '-'+r;
	// 返回结果
	return r;

}

bool Check_all_number(string a)
{
	if(a.empty())
		return false ;
	string::size_type L = a.size(),i = 0;
	if(a[0] == '-')
		i++;
	while( i < L )
	{
		if( a[i] < '0' || a[i] > '9')
			return false;
		i++; 
	}
	return true ;
}

std::pair<string,int> StandardXiaoshu(string a)
{
	// 数据域
	bool fushu = false ;
	string b;
	unsigned int i;

	// 检查a是否是小数
	if(a[0] == '-')
	{
		fushu = true;
		a = a.substr(1,a.length()-1);
	}
	// a是小数
	if(XiaoshuCheck(a) == true)
	{
		// 把小数部分的末尾0去掉
		while(true)
		{
			if(a[a.length()-1] == '0')
				a = a.substr(0,a.length()-1);
			else break;
		}
		// 把整数部分的前面的0去掉
		for(i=0;i<a.length();i++)
			if(a[i] == '.')
			{
				b = a.substr(0,i);
				a = a.substr(i+1,a.length()-i-1);
				break;
			}
			Standardization(b);
			a = b+a;
			i = a.length() - b.length();
			if(fushu == true)
				a = "-"+a;

			// 返回值
			return std::make_pair(a,i);

	}
	// a是整数
	else if(Check_all_number(a) == true)
	{
		Standardization(a);
		if(fushu == true)
			a = "-"+a;
		return std::make_pair(a,0);
	}
}

string MULT_Int(string a,string b)
{
	// exception of input
	if( a.empty() )
		return b;
	else if( b.empty() )
		return "0";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input Multiplies_Int";
	}
	Standardization(a);
	Standardization(b);	
	string::size_type i = a.size(),j = b.size();
	string c = "0",d = "";
	bool fushu = (a[0] == '-' && b[0] != '-')||(a[0] != '-' && b[0] == '-');
	if(a[0] == '-')	
		a = a.substr(1,a.size());		
	if(b[0] == '-')	
		b = b.substr(1,b.size());

	int jinwei = 0;
	for( j = b.size()-1 ; j < b.size() ;j--)
	{
		// each number of b to * a 
		jinwei = 0;
		for( i = a.size()-1 ; i < a.size() ;i-- )
		{
			d = IntToChar(   ( CharToNumber(a[i]) * CharToNumber(b[j]) + jinwei ) % 10 )+ d ;
			jinwei = ( CharToNumber(a[i]) * CharToNumber(b[j]) + jinwei ) / 10 ;
		}
		if(jinwei)
			d = IntToChar(jinwei) +d;
		// add all number result
		c = ADD_Int(c,d);
		d = "";
		unsigned int zero = 0 ;
		while( zero < b.size() - j )
		{
			d = d + '0';
			zero ++;
		}

	}

	Standardization(c);
	if( fushu && c != "0" )
		return '-'+c;
	else return c;
}

bool Standardization(string &a)
{
	if(!Check_all_number(a))
	{
		cout<<a<<" exception of input Standardization"<<endl;
		return false;
	}
	string::size_type i = 0 ;
	bool fushu = false ;
	if( a[0] == '-' )
	{
		fushu = true ;
		i = 1 ;
	}
	while(i < a.size())
	{
		if(a[i] != '0')
			break;
		i++;
	}
	if(i == a.size())
		i--;
	a = a.substr(i,a.size()-i) ;
	if( fushu && a != "0")
		a = '-' + a ;
	return true ;
}

string IntToChar(int i)
{
	if( i >= 0 && i <= 9 )
	{
		string c = "";
		return c+char(i+48);
	}
	else
	{
		cout<<i<<" exception of input IntToChar"<<endl;
		return "e";
	}
}


// make char to the int number
int CharToNumber(char c)
{
	if( c >= '0' && c <= '9' )
		return int(c - '0');
	else 
	{
		cout<<c<<" exception of input CharToNumber "<<endl;
		return 0;
	}
};

string ADD_Int(string a,string b)
{
	// exception of input
	if( a.empty() )
		return b;
	else if( b.empty() )
		return "0";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input ADD_Int";
	}
	Standardization(a);
	Standardization(b);	

	if(a[0] != '-' && b[0] != '-')
		return AddInt(a,b);
	else if(a[0] != '-'&& b[0] == '-')		
		return SubInt( a,b.substr( 1,b.size() ) );
	else if(a[0] == '-'&& b[0] != '-')
		return SubInt(b,a.substr(1,a.size()));
	else return '-'+AddInt(a.substr(1,a.size()),b.substr( 1,b.size() ));
};

string SubInt(string a,string b)
{
	// exception of input
	if(!Check_all_number(a) || !Check_all_number(b))
		return "exception of input MinusInt";
	Standardization(a);
	Standardization(b);
	// particular string of input
	if(a.empty())
	{
		if(b.empty())
			return "0";
		else
			return "-"+b;
	}
	else if(b.empty())
	{
		return a;
	}

	// normal number a < b
	string c = "";
	bool check = true ;
	if(Compare(a,b) == '=')
		return "0";
	else if(Compare(a,b) == '<')
	{
		c = a ;
		a = b ;
		b = c ;
		c = "";
		check = false ;
	}
	// normal number a >= b
	string::size_type i = a.size()-1, j = b.size()-1;
	int jiewei = 0,now;

	while(i < a.size() && j < b.size())
	{
		now = CharToNumber(a[i]) - CharToNumber(b[j]) - jiewei ;

		if( now < 0 )
		{
			jiewei = 1;
			now = 10 + now ;
		}
		else jiewei = 0;
		c = IntToChar(now)  + c ;
		i--;j--;
	}
	while(i < a.size())
	{
		now = CharToNumber(a[i]) - jiewei ;
		if( now < 0 )
		{
			jiewei = 1;
			now = 10 + now ;
		}
		else jiewei = 0;
		c = IntToChar( now )  + c ;
		i--;
	}
	Standardization(c);
	if(!check)
		c = '-' + c;		
	return c; 
};

string AddInt(string a,string b)
{
	// exception of input
	if( a.empty() )
		return b;
	else if( b.empty() )
		return "0";
	if(!Check_all_number(a) || !Check_all_number(b))
	{
		return "exception of input AddInt";
	}
	Standardization(a);
	Standardization(b);
	string::size_type i = a.size()-1 ,j = b.size()-1 , k = 0 ;
	string c = "";
	int jinwei = 0;
	while( i < a.size() && j < b.size() )
	{
		c = IntToChar( ( CharToNumber(a[i]) + CharToNumber(b[j]) + jinwei ) % 10 ) + c;
		jinwei = ( CharToNumber(a[i]) + CharToNumber(b[j]) + jinwei ) / 10;
		j--;i--;
	}
	while( j < b.size()  )
	{
		c =  IntToChar( ( CharToNumber(b[j]) + jinwei ) % 10 ) + c;
		jinwei = ( jinwei + CharToNumber(b[j]) ) / 10;	
		j--;
	}
	while( i < a.size() )
	{
		c =  IntToChar( ( CharToNumber(a[i]) + jinwei ) % 10 ) + c;
		jinwei = ( jinwei + CharToNumber(a[i]) ) / 10;	
		i--;
	}
	if( jinwei )
		c = IntToChar(  jinwei  ) + c;
	Standardization(c);
	return c;
};

char Compare(string a,string b)
{
	if(a.empty() || b.empty())
	{
		cout<<"error of input compare";
		return 'e';
	}
	else
	{
		if(!Check_all_number(a) || !Check_all_number(b))
		{
			return 'e';
		}
		Standardization(a);
		Standardization(b);
		if(a[0] == '-' && b[0] != '-')
			return '<';
		else if( a[0] != '-' && b[0] == '-')
			return '>';
		bool fushu = (a[0] == '-');

		if(a.size() > b.size() )
			return fushu?'<':'>';
		else if(a.size() == b.size())
		{
			for(string::size_type i = 0;i < a.size(); i++)
			{
				if(a[i] > b[i])
					return fushu?'<':'>';
				if(a[i] < b[i])
					return fushu?'>':'<';
			}
			return '=';
		}			
		return fushu?'>':'<';
	}
}

char CompareXiaoshu(string a,string b)
{
	if(XiaoshuCheck(a) && XiaoshuCheck(b))
	{
		pair<string,int> sa= StandardXiaoshu(a);
		pair<string,int> sb= StandardXiaoshu(b);
		int length = sa.second - sb.second;
		while(length != 0)
		{
			if(length < 0)
			{
				sa.first +="0";
				length++;
			}
			else if(length > 0)
			{
				sb.first +="0";
				length--;
			}
			return Compare(sa.first,sb.first);
		}
	}
}

int main()
{

	string a;
	int b;
	while(cin>>a>>b)
		cout<<FloatPower(a,b)<<endl;
	//system("pause");
	return 0;
}







【算法】高精度幂 在高精度王国中,有个格外简单的算法,高精度幂,幂是什么?幂就是求次方,我敢说,高精度幂低精度,只要不考虑超时,比高精度加法还简单,因为就是不停地加自己,位数相同,高精度加法还得考虑位数不相同的,那么高精度幂该如何实现呢?请看下面: #include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; string a="2",b; int c; in 阅读详情

相关推荐

poj 1220(高精度数的任意进制转换)

问题描述: 已知:位数为K(0 求:转换为M进制(2 ≤ M ≤62)后的新数Q 输入:第1行为case数T;第2至第T+1行为T个case,每行输入均为N、M以及P,用空格分隔 输出:采用以下形式输出 N P M Q 空行 …… Sample

1402

求高精度幂(Poj 1001)

Description对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实数R( 0.0 &lt; R &lt; 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 &lt; n &lt;= 25。InputT输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8...

星辰_大海的博客 545

POJ 1001 Exponentiation 求高精度幂 C源代码

如题所示,亲测可用。求高精度幂,不会的同学可以参考下,会做的同学可以给挑挑毛病!大家以代码会友!

求高精度幂

求高精度幂 Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 87719   Accepted: 20833 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。

huangjianxiang1875的专栏 1788

乘方高精度算法结果位数可达21亿

结果位数可达21亿,不过时间会很长,注意初步估计结果位数别太长。

北大ACM高精度幂

北大ACM高精度幂

LightOJ 1024 Eid(高精度乘法+求n个数最小公约数)

题目链接:https://vjudge.net/contest/28079#problem/T 题目大意:给你n个数求这些数的最小公倍数(约数)。 解题思路:还太菜了,看了别人的题解才会写,转自这里,每个数的大小是1~10000,且有2~1000个数,可能达到1000个4位数相乘,所以结果很大,将近4000位。所以要使用高精度计算,而且不能直接按照我们平时计算最小公倍数的算法(循环过...

weixin_30284355的博客 150

中兴U30air随身WiFi刷机全攻略:从ABD开启到系统调试(附工具包)

本文提供中兴U30air随身WiFi刷机全攻略,从ADB开启到系统调试的详细步骤,包括必备工具清单、ADB调试模式解锁、Bootloader解锁及自定义ROM刷入与调优。适合技术爱好者深度定制设备,提升网络性能和功能扩展。

weixin_29235923的博客 1950

POJ 1001--Exponentiation

poj 1001

Hering_Linux的专栏 468

单细胞实战之亚细胞分群从T/NK至CD4+T细胞——从入门到进阶(中级篇1)

亚细胞分群从T/NK至CD4+T细胞

zfyyzhys的博客 6389

基于MS5351的三通道可编程时钟发生器设计

时钟发生器是数字系统时序验证与信号完整性测试的核心基础设备,其原理基于锁相环(PLL)对参考晶振进行倍频与分频控制,通过寄存器配置实现多路独立频率输出。技术价值体现在高精度、低抖动、快速切换与工程可部署性之间取得平衡,尤其适用于FPGA/ASIC参考时钟调试、ADC/DAC采样时钟验证及嵌入式硬件时序裕量评估等场景。本方案采用MS5351三通道时钟芯片与ESP32主控协同架构,在保证LVCMOS输出质量与I²C可编程性的前提下,优化电源噪声抑制、晶体负载匹配和跨板信号完整性,兼顾成本、周期与实测稳定性,为实

weixin_31715353的博客 211

4.14 | 学习笔记

1.“双阶乘的质因数个数” 之前想要开数组,把所有1到10000的双阶乘值都存好,然后再写一个函数算出质因子个数,最后悲剧了 换个思路,每个因数中分别有多少个质因数m,相加就好啦 #include<bits/stdc++.h> using namespace std; int T,n,m,tmp,cnt; int main() { cin&gt...

weixin_30340819的博客 83

1.3-----Simplify 3D切片软件:从新手困惑到高效打印的进阶设置指南

本文详细介绍了Simplify 3D切片软件在大型模型打印中的高效设置技巧,包括切片效率、支撑结构智能生成和精细参数调节等核心优势。通过实战案例和进阶参数设置指南,帮助用户从新手快速进阶到高效打印,显著提升3D打印质量和效率。

weixin_42552716的博客 422

记录学习的第十四天

之后看了题解,发现原来是一道数学问题,时间复杂度竟然可以到n(1)这个其实是一道数学问题,所需要删除的数其实是2的幂,所以就转换为求2的幂了。设置一个变量表示每一位,个位数为1,十位数为2,这样一直下去。关键就是如果是偶数,把这个数连续除以2,直到变成一个奇数为止。这道题其实我觉得比较简单的,然后我进行了下面的尝试👇🏻。之后三道洛谷里面的蓝桥杯真题,是比较简单的。首先定义一个函数求出每个数的封闭图形的数。然后根据封闭图形的数目进行判断就可以了。如果这个奇数是1,则这个偶数是2的幂。首先力扣的每日一题开菜

xiufeia的博客 577

三轴云台稳定控制算法优化实战:从PID到模糊自适应

本文深入探讨了三轴云台稳定控制算法的优化实践,从经典PID控制到模糊自适应算法的进阶应用。通过实战案例和代码示例,详细解析了PID调参技巧、模糊控制实现及多传感器数据融合方法,帮助工程师在复杂环境下提升云台抗干扰能力和响应速度,特别适用于无人机航拍等场景。

green的博客 912

SillyTavern角色卡制作全攻略:如何用AI还原你喜欢的虚构角色(附三叶完整角色卡JSON)

本文详细介绍了如何使用SillyTavern制作高质量AI角色卡,以《你的名字》中的宫水三叶为例,从角色特征提取、对话风格捕捉到JSON结构优化,全面解析AI角色扮演的创作技巧。通过具体的写作示例和完整角色卡JSON,帮助二次元爱好者和同人创作者实现虚构角色的精准还原与生动互动。

pandas7gardener的博客 2132

1001:求高精度幂

Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 Input T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。 Output 对于每组输入,要求输出一行,该行包含精

zhang_han666的博客 227

基于STM32+华为云设计的智慧农业灌溉系统(2023升级版)(158)

本项目设计一种基于STM32的智慧农业监测系统。该系统能够检测空气温度、湿度、光强度和土壤湿度等关键指标,并自动调节浇水量,实现作物生长环境的精细化管理。同时,本项目还支持本地LCD屏幕数据显示和通过ESP8266上传数据到华为云物联网平台,同时搭建流媒体服务器实现摄像头远程监控。最重要的是,本项目将利用Qt开发Android手机APP,使用户可以远程查看监测情况,了解农作物生成情况。

1万+

NYOJ155-求高精度幂

求高精度幂 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。  现在要你解决的问题是:对一个实数R( 0.0 ,要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 。 输入 输入有多行,每行有两个数R和n,空格分开。R的数字

YCH1035235541的专栏 1675

基于MATLAB的特征模式分解(FMD)算法详解

本文详细介绍了基于MATLAB的特征模式分解(FMD)算法实现。FMD是一种新型自适应信号分解方法,通过自适应FIR滤波器组和相关峭度优化目标,有效解决传统方法(如EMD、VMD)的模态混叠问题。文章系统阐述了FMD的算法原理、数学模型和实现步骤,包括自适应FIR滤波器设计、相关峭度优化和模态选择机制。与现有方法相比,FMD在旋转机械故障诊断中展现出更强的特征提取能力和噪声鲁棒性。MATLAB实现部分包含核心函数、参数优化和可视化工具,并通过轴承故障等案例验证了算法的有效性。

qq_42212808的博客 193

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

nyoj 155 求高精度幂

http://acm.nyist.net/JudgeOnline/problem.php?pid=155 注意去除前导0,去除和小数最后面的0.要用到stripTrailingZeros函数,另外要注意,高精度浮点数BigDecimal类计算输出自动按照科学计数法来,要用toPlainString函数恢复最初状态。 import java.math.BigDecimal; import j

GinSmile的博客 1491

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

poj-1001高精度幂

**求高精度幂** Time Limit: 500MS Memory Limit: 10000K Total Submissions: 191401 Accepted: 45899 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实...

zgh27的博客 191

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jzxx1246求高精度幂

题目描述 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实数R( 0.0 &lt; R &lt; 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 &lt;= n &lt;= 25。 输入 T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 ...

lyz060510的博客 324
上一篇: 数字用加法分解之谜
下一篇: MAP 电话号码
p11323
博客等级 码龄14年 79粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值