Find sum of factorials in an array

• Last Updated : 08 Jun, 2022

Given an array arr[] of N integers. The task is to find the sum of factorials of each element of the array.

Examples:

Input: arr[] = {7, 3, 5, 4, 8}
Output: 45510
7! + 3! + 5! + 4! + 8! = 5040 + 6 + 120 + 24 + 40320 = 45510

Input: arr[] = {2, 1, 3}
Output:

Approach: Implement a function factorial(n) that finds the factorial of n and initialize sum = 0. Now, traverse the given array and for each element arr[i] update sum = sum + factorial(arr[i]). Print the calculated sum in the end.

Below is the implementation of the above approach:

C++

 `// C++ implementation of the approach``#include ``#include ``using` `namespace` `std;` `// Function to return the factorial of n``int` `factorial(``int` `n)``{``    ``int` `f = 1;``    ``for` `(``int` `i = 1; i <= n; i++)``    ``{``        ``f *= i;``    ``}``    ``return` `f;``}` `// Function to return the sum of``// factorials of the array elements``int` `sumFactorial(``int` `*arr, ``int` `n)``{` `    ``// To store the required sum``    ``int` `s = 0,i;``    ``for` `(i = 0; i < n; i++)``    ``{` `        ``// Add factorial of all the elements``        ``s += factorial(arr[i]);``    ``}``    ``return` `s;``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 7, 3, 5, 4, 8 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``    ``cout << sumFactorial(arr, n);``    ``return` `0;``}``    ` `// This code is contributed by 29AjayKumar`

Java

 `// Java implementation of the approach``class` `GFG {` `    ``// Function to return the factorial of n``    ``static` `int` `factorial(``int` `n)``    ``{``        ``int` `f = ``1``;``        ``for` `(``int` `i = ``1``; i <= n; i++) {``            ``f *= i;``        ``}``        ``return` `f;``    ``}` `    ``// Function to return the sum of``    ``// factorials of the array elements``    ``static` `int` `sumFactorial(``int``[] arr, ``int` `n)``    ``{` `        ``// To store the required sum``        ``int` `s = ``0``;``        ``for` `(``int` `i = ``0``; i < n; i++) {` `            ``// Add factorial of all the elements``            ``s += factorial(arr[i]);``        ``}``        ``return` `s;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int``[] arr = { ``7``, ``3``, ``5``, ``4``, ``8` `};``        ``int` `n = arr.length;``        ``System.out.println(sumFactorial(arr, n));``    ``}``}`

Python3

 `# Python implementation of the approach` `# Function to return the factorial of n``def` `factorial(n):``    ``f ``=` `1``;``    ``for` `i ``in` `range``(``1``, n ``+` `1``):``        ``f ``*``=` `i;``    ``return` `f;` `# Function to return the sum of``# factorials of the array elements``def` `sumFactorial(arr, n):` `    ``# To store the required sum``    ``s ``=` `0``;``    ``for` `i ``in` `range``(``0``,n):` `        ``# Add factorial of all the elements``        ``s ``+``=` `factorial(arr[i]);``    ``return` `s;` `# Driver code``arr ``=` `[``7``, ``3``, ``5``, ``4``, ``8` `];``n ``=` `len``(arr);``print``(sumFactorial(arr, n));` `# This code contributed by Rajput-Ji`

C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{` `    ``// Function to return the factorial of n``    ``static` `int` `factorial(``int` `n)``    ``{``        ``int` `f = 1;``        ``for` `(``int` `i = 1; i <= n; i++)``        ``{``            ``f *= i;``        ``}``        ``return` `f;``    ``}` `    ``// Function to return the sum of``    ``// factorials of the array elements``    ``static` `int` `sumFactorial(``int``[] arr, ``int` `n)``    ``{` `        ``// To store the required sum``        ``int` `s = 0;``        ``for` `(``int` `i = 0; i < n; i++)``        ``{` `            ``// Add factorial of all the elements``            ``s += factorial(arr[i]);``        ``}``        ``return` `s;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `Main()``    ``{``        ``int``[] arr = { 7, 3, 5, 4, 8 };``        ``int` `n = arr.Length;``        ``Console.WriteLine(sumFactorial(arr, n));``    ``}``}` `// This code is contributed by Ryuga`

PHP

 ```   `

Javascript

 ``

Output:

`45510`

Time Complexity: O(n2)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up