import Foundation
func calculateLargeNumbersPower(base: Int, exponent: Int) -> [Int] {
var digits = [1] // Least significant digit first
for _ in 1...exponent {
var carry = 0
for i in 0..<digits.count {
let num = digits[i] * base + carry
digits[i] = num % 10
carry = num / 10
}
while carry > 0 {
digits.append(carry % 10)
carry /= 10
}
}
return digits
}
func digitsToStringReversed(_ digits: [Int]) -> String {
return digits.reversed().map(String.init).joined()
}
let testCases = [15, 100]
for n in testCases {
let digits = calculateLargeNumbersPower(base: 2, exponent: n)
let resultString = digitsToStringReversed(digits)
print("2^\(n) = \(resultString)")
}
/*
run:
2^15 = 32768
2^100 = 1267650600228229401496703205376
*/