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
// 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 series int calculateSeries( int n)
{ return factorial(n + 1) - 1;
} // Drivers code int main()
{ int n = 3;
cout << calculateSeries(n);
return 0;
} |
// 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. |
# 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 # series def calculateSeries(n):
return factorial(n + 1 ) - 1
# Drivers code n = 3
print (calculateSeries(n))
# This code is contributed by # Ansu Kumari. |
// 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 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 series function calculateSeries( $n )
{ return factorial( $n + 1) - 1;
} // Driver code $n = 3;
echo calculateSeries( $n );
// This code is contributed // by akt_mit ?> |
<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 series function calculateSeries(n)
{ return factorial(n + 1) - 1;
} // Driver code let n = 3; document.write( calculateSeries(n)); // This code is contributed // by sravan kumar </script> |
23
Time Complexity : O(n).
Auxiliary Space: O(1)