Оглавление > Сумма цифр факториала
16.03.2023

Сумма цифр факториала

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

Например, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800, и сумма цифр в числе 10! равна 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

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

Решение (F#)

благодаря наличию типа bigint, которая не имеет ограничения (в теории) задача становится весьма тривиальной:

  1. перемножаем числа от 1 до 100
  2. преобразуем в строку
  3. преобразуем в массив символов
  4. преобразуем каждый символ в строку, затем в число
  5. сложим все вместе
  6. выведем ответ
let fact = [1..100] |> List.map bigint |> List.reduce (*)

let answer = fact.ToString().ToCharArray() |> Array.sumBy (string>>int)

printfn $"the answer is {answer}" //the answer is 648
  • кому интересно чему равен факториал 100
    100! = 93 326 215 443 944 152 681 699 238 856 266 700 490 715 968 264 381 621 468 592 963 895 217 599 993 229 915 608 941 463 976 156 518 286 253 697 920 827 223 758 251 185 210 916 864 000 000 000 000 000 000 000 000
    
Задать вопрос автору, обсудить