397 подписчиков

Решение 20 задачи проекта Эйлера: Сумма цифр факториала

114 прочитали

Задача несложная, при вычислении факториала воспользовался массивами для хранения больших чисел.

Условия задачи

n! означает n × (n − 1) × ... × 3 × 2 × 1

Например:

10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800

и сумма цифр в числе 10! равна:

3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

Найдите сумму цифр в числе 100!.

Описание работы программы

Программа для решения задачи Эйлера #20 - часть 1
Программа для решения задачи Эйлера #20 - часть 1

Т.к. программа получилась довольно громоздкой, то разделил ее на два скриншота.

Программа для решения задачи Эйлера #20 - часть 2
Программа для решения задачи Эйлера #20 - часть 2

Числа при расчёте факториала получаются огромные, поэтому храниться будут в виде отдельных цифр в массивах. Цифры из одного массива (arr) по очереди перемножаются на очередное число (от 1 до 100) и результаты умножения записываются во второй массив (answ).

При этом число, полученное при умножении:

num = arr[i] * j;

раскладывается на единицы, десяти и сотни, которые уже и прибавляются в соответствующие разряды числа-массива answ[].

answ[i] = int_num;
answ[i+1] = dec;
answ[i+2] = hndr;

После вычисления !100 остаётся просто сложить цифры из массива.

Ответ на задачу:

P.S. Изначальная цель блога - получить "фидбек" в комментариях, чтобы более опытные "кодеры" указывали мне на ошибки, советовали и всячески помогали в саморазвитии.

Также приглашаю всех на мой сайт)

На нем Вы можете посмотреть ответ на задачу Эйлера 20 (когда необходима лишь небольшая подсказка) и последний, самый быстрый вариант решения.

Говорят, где-то рядом один "не подписавшийся" есть... на канал... не видели?
Говорят, где-то рядом один "не подписавшийся" есть... на канал... не видели?

В общем, добро пожаловать на канал))