package main
import (
"fmt"
"math/big"
)
func sumOfDigits(n int64) int {
// Compute 2^n using big.Int
two := big.NewInt(2)
power := new(big.Int).Exp(two, big.NewInt(n), nil)
// Convert to string and sum digits
digits := power.String()
sum := 0
for _, ch := range digits {
sum += int(ch - '0')
}
return sum
}
func main() {
for _, n := range []int64{15, 100, 1000} {
fmt.Printf("Sum of digits of 2^%d is: %d\n", n, sumOfDigits(n))
}
}
/*
run:
Sum of digits of 2^15 is: 26
Sum of digits of 2^100 is: 115
Sum of digits of 2^1000 is: 1366
*/