Zachary Stence

Problem 16: Power digit sum

215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.

What is the sum of the digits of the number 21000?

#include<iostream>
#include<math.h>
using namespace std;

void displayArray(int array[], int size) {
  for(int i = 0; i < size; i++) {
    cout << array[i];
  }
  cout << endl;
}

int sumArray(int array[], int size) {
  int sum = 0;
  for (int i = 0; i < size; i++) {
    sum += array[i];
  }
  return sum;
}

void carry(int array[], int size) {
  int ones, tens;
  for(int i = 1; i < size; i++) {
    if(array[i] >= 10) {
      ones = array[i] - 10;
      tens = array[i] / 10;
      array[i - 1] += tens;
      array[i] = ones;
    }
  }
}

void multiply(int array[], int size, int multiplier, int power) {
  for (int count = 1; count <= power; count++) {
    for(int i = 0; i < size; i++) {
      array[i] *= multiplier;
    }
  carry(array, size);
  }
}

void setup(int array[], int size) {
  array[size - 1] = 1;
  for(int i = 0; i < size - 1; i++) {
    array[i] = 0;
  }
}

int power(int base, int power) {
  int size = ceil(power * (log(base)/log(10)));
  int number[size];
  setup(number, size);
  
  multiply(number, size, base, power);
  carry(number, size);

  return sumArray(number, size);
}

int main() {
  int x = 2;
  int y = 1000;
  cout << power(x, y) << endl;
  
}

Answer: 1366