В задаче решается проблема работы с очень большими числами, я использовал массив.
Условия задачи
2^15 = 32768, сумма цифр этого числа равна 3 + 2 + 7 + 6 + 8 = 26.
Какова сумма цифр числа 2^1000?
Описание работы программы
Основная проблема в этой задаче - невозможность просто оперировать столь большими цифрами в языке C (2^1000 представляет из себя 300-значное число).
Поэтому для хранения чисел при вычисления применил два массива:
int arr[304] = {2}; //массив для записи числа до возведения в степень
int answ[306] = {0}; //после возведения в степень
Возведение числа 2 в очередную степень представляет умножение числа на 2.
num *= 2; //умножаем каждую цифру числа в массиве
Если при умножении получаются двузначные числа, то старший разряд отделяется и заносится не в текущую ячейку массива, а в следующую.
dex_num = num/10; //отделяем десятки, если число более 9
answ[i+1] += dex_num; //переносим десятки на следующий разряд
num = num%10; //отделяем числа до 10
answ[i] += num; //заносим остаток числа в массив
После 1000 итераций умножения числа, цифры ответа складываются
for (int i = 0; i < 304; i++)
//складываем цифры числа
sum_num += arr[i];
Ответ на задачу:
Считает почти за полсекунды.
P.S. Изначальная цель блога - получить "фидбек" в комментариях, чтобы более опытные "кодеры" указывали мне на ошибки, советовали и всячески помогали в саморазвитии.
Также приглашаю всех на мой сайт)
На нем Вы можете посмотреть ответ на задачу Эйлера 16 (когда необходима лишь небольшая подсказка) и последний, самый быстрый вариант решения.
В общем, добро пожаловать на канал))