BigNumber
#include
#include
#include
void main(void)
{
// 以下算法计算n的m次方
// m的定义域是[1,2^31],n的定义域是[0,65535]
// 原理就是按位相乘,处理进位
int n = 26, m = 20;
div_t dr={0};
std::vector vecNum(1,n);
/* 说明这个vector是用来存放int的。用vector存储大数,
首位赋n div_t results = std::div(93, 17);*/
for(int i = 0; i< m-1; ++i ,dr.quot=0)
// 每次将上次的商清零,循环乘m次
{
dr.rem)
// 对大数的每一位都乘以n
for (std::vector::iterator cur = vecNum.begin();cur != vecNum.end();*(cur++) =
{
}
/*
{
vector
typedef
T*
iterator;
}
*/
// 加上上一位的余数
*cur = *cur * n + dr.quot;
// 除的余,保留个位数
dr = div(*cur, 10);
// 下面的循环处理进位使位数增加的情况
for (dr = div(dr.quot,10);dr.quot || dr.rem;dr = div(dr.quot,10))
vecNum.push_back(dr.rem);
}
// 下面输出,从最后的最高位开始
for (std::vector::reverse_iterator rcur = vecNum.rbegin();rcur != vecNum.rend();
++rcur)
{
}
std::cout << *rcur;
std::cout<