#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
*/