Данную операцию можно решить лобовым перемножением исходного числа, а можно воспользоваться быстрым возведением в степень:
- BigInt pow(const BigInt &a, const int &N)
- {
- BigInt res(1),cur = a;
- int n = N;
- while (n)
- {
- if (n&1)
- res = res * cur;
- cur = cur * cur;
- n>>=1;
- }
- return res;
- }
* This source code was highlighted with Source Code Highlighter.
Стоит обратить внимание на то, что количество разрядов у результирующего числа очень быстро растет, поэтому нужно грамотно подбирать размерность массива digits в структуре BigInt.