Given n, we need to find sum of 1*1! + 2*2! + ……..+ n*n!
Examples:
Input: 1
Output: 1
Input: 3
Output: 23
1 * 1! + 2 * 2! + 3 * 3! = 1 + 4 + 18 = 23
We may assume that overflow does not happen.
A simple solution is to compute terms one by one and add to result.
An efficient solution is based on direct formula (n + 1)! – 1
How does this formula work?
We basically need to compute below sum.
?(i * i!) Where i varies from 1 to n
= ?((i + 1 – 1) * i!)
= ?((i+1) * i!) – ?i!
= ?(i + 1)! – ?(i!)
?(i + 1)! = 2! + 3! + … (n+1)! where 1 <= i <= n —–(1)
?(i!) = 1! + 2! + 3! + … (n)! where 1 <= i <= n —–(2)
Subtracting second from first, we get (n+1)! – 1
C++
// CPP program to find sum of the series.#include <bits/stdc++.h>using namespace std;int factorial(int n){ int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res;}// Function to calculate required seriesint calculateSeries(int n){ return factorial(n + 1) - 1;}// Drivers codeint main(){ int n = 3; cout << calculateSeries(n); return 0;} |
Java
// Java program to find sum of // the series.import java.io.*;class GFG { static int factorial(int n) { int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res; } // Function to calculate required // series static int calculateSeries(int n) { return factorial(n + 1) - 1; } // Drivers code public static void main (String[] args) { int n = 3; System.out.println( calculateSeries(n)); }}// This code is contributed by anuj_67. |
Python3
# Python program to find sum of # the series.def factorial(n): res = 1 for i in range(2, n+1): res = res * i return res# Function to calculate required# seriesdef calculateSeries(n): return factorial(n + 1) - 1# Drivers coden = 3print(calculateSeries(n))# This code is contributed by # Ansu Kumari. |
C#
// C# program to find // sum of the series.using System;class GFG{ static int factorial(int n) { int res = 1; for (int i = 2; i <= n; i++) res = res * i; return res; } // Function to calculate // required series static int calculateSeries(int n) { return factorial(n + 1) - 1; } // Driver code static public void Main () { int n = 3; Console.WriteLine( calculateSeries(n)); }}// This code is contributed by ajit. |
PHP
<?php// PHP program to find// sum of the series.function factorial($n){ $res = 1; for ($i = 2; $i <= $n; $i++) $res = $res * $i; return $res;}// Function to calculate// required seriesfunction calculateSeries($n){ return factorial($n + 1) - 1;}// Driver code$n = 3;echo calculateSeries($n);// This code is contributed // by akt_mit?> |
Javascript
<script>// java script program to find// sum of the series.function factorial(n){ let res = 1; for (let i = 2; i <= n; i++) res = res * i; return res;}// Function to calculate// required seriesfunction calculateSeries(n){ return factorial(n + 1) - 1;}// Driver codelet n = 3;document.write( calculateSeries(n));// This code is contributed // by sravan kumar</script> |
23
Time Complexity : O(n).
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
