Sum of series 1*1! + 2*2! + ……..+ n*n!
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++
#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;
}
int calculateSeries( int n)
{
return factorial(n + 1) - 1;
}
int main()
{
int n = 3;
cout << calculateSeries(n);
return 0;
}
|
Java
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;
}
static int calculateSeries( int n)
{
return factorial(n + 1 ) - 1 ;
}
public static void main (String[] args)
{
int n = 3 ;
System.out.println(
calculateSeries(n));
}
}
|
Python3
def factorial(n):
res = 1
for i in range ( 2 , n + 1 ):
res = res * i
return res
def calculateSeries(n):
return factorial(n + 1 ) - 1
n = 3
print (calculateSeries(n))
|
C#
using System;
class GFG
{
static int factorial( int n)
{
int res = 1;
for ( int i = 2; i <= n; i++)
res = res * i;
return res;
}
static int calculateSeries( int n)
{
return factorial(n + 1) - 1;
}
static public void Main ()
{
int n = 3;
Console.WriteLine(
calculateSeries(n));
}
}
|
PHP
<?php
function factorial( $n )
{
$res = 1;
for ( $i = 2; $i <= $n ; $i ++)
$res = $res * $i ;
return $res ;
}
function calculateSeries( $n )
{
return factorial( $n + 1) - 1;
}
$n = 3;
echo calculateSeries( $n );
?>
|
Javascript
<script>
function factorial(n)
{
let res = 1;
for (let i = 2; i <= n; i++)
res = res * i;
return res;
}
function calculateSeries(n)
{
return factorial(n + 1) - 1;
}
let n = 3;
document.write( calculateSeries(n));
</script>
|
Time Complexity : O(n).
Auxiliary Space: O(1)
Last Updated :
08 Sep, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...