How to calculate power for large numbers in C++

2 Answers

0 votes
#include <iostream>
#include <string>
#include <vector>

// Multiplies a large number (represented as a string)
std::string MultiplyLargeNumber(const std::string& number, long long base) {
    std::vector<int> result;
    int carry = 0;

    // Multiply each digit from least significant to most
    for (int i = number.size() - 1; i >= 0; --i) {
        int digit = number[i] - '0';
        int product = digit * base + carry;
        result.push_back(product % 10);
        carry = product / 10;
    }

    // Handle remaining carry
    while (carry > 0) {
        result.push_back(carry % 10);
        carry /= 10;
    }

    // Convert result vector back to string
    std::string finalResult;
    for (int i = result.size() - 1; i >= 0; --i) {
        finalResult += (result[i] + '0');
    }

    return finalResult;
}

// Computes base^exponent for large numbers
std::string CalculateLargeNumbersPower(long long base, long long exponent) {
    std::string result = "1";

    for (long long i = 0; i < exponent; ++i) {
        result = MultiplyLargeNumber(result, base);
    }

    return result;
}

int main() {
    long long base = 2, exponent = 100;
    
    std::cout << CalculateLargeNumbersPower(base, exponent) << std::endl;
}



/*
run:

1267650600228229401496703205376

*/


 



answered Aug 2, 2025 by avibootz
0 votes
#include <iostream>
#include <string>
#include <vector>
#include <algorithm> // Required for std::reverse

std::string CalculateLargeNumbersPower(int base, int exponent) {
    std::string result = "1";
     
    for (int i = 0; i < exponent; i++) {
        int carry = 0;
        for (auto &digit : result) {
            int num = (digit - '0') * base + carry;
            digit = (num % 10) + '0';
            carry = num / 10;
        }
        if (carry > 0) {
            result += (carry + '0');
        }
    }
     
    std::reverse(result.begin(), result.end());
    
    return result;
}

int main() {
    int base = 2, exponent = 15;
    
    std::string str = CalculateLargeNumbersPower(base, exponent);
    std::cout << "2^15 = " << str << std::endl;

    long long num = std::stoll(str);
    std::cout << "As number: " << num << std::endl;
    
    base = 2, exponent = 100;
    
    str = CalculateLargeNumbersPower(base, exponent);
    std::cout << "2^100 = " << str << std::endl;
    
    std::vector<int> largeNumber; // Store each digit in a vector
    for (char ch : str) {
        largeNumber.push_back(ch - '0'); // Convert char to int
    }

    std::cout << "Digits: ";
    for (int digit : largeNumber) {
        std::cout << digit;
    }
}

      
      
/*
run:
      
2^15 = 32768
As number: 32768
2^100 = 1267650600228229401496703205376
Digits: 1267650600228229401496703205376

*/

 



answered Aug 2, 2025 by avibootz
edited Aug 2, 2025 by avibootz

Related questions

1 answer 69 views
1 answer 104 views
1 answer 78 views
1 answer 82 views
1 answer 94 views
1 answer 86 views
...