logo资料库

C++ STL算法实现大数计算.doc

第1页 / 共1页
资料共1页,全文预览结束
BigNumber
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<
分享到:
收藏