Sum of the series Kn + ( K(n-1) * (K-1)1 ) + ( K(n-2) * (K-1)2 ) + ……. (K-1)n
Last Updated :
09 Jun, 2022
Given a value K and n, the task is to find the sum of the below series:
Kn + ( K(n-1) * (K-1)1 ) + ( K(n-2) * (K-1)2 ) + ……. (K-1)n
Examples:
Input: n = 3, K = 3
Output: 65
Explanation:
(3*3*3) + (3*3*2) + (3*2*2) + (2*2*2)
= 27 + 18 + 12 + 8
= 65
Input: n = 4, k = 2
Output: 31
Explanation:
(2*2*2*2) + (2*2*2*1)+ (2*2*1*1) + (2*1*1*1) + (1*1*1*1)
= 16 + 8 + 4 + 2 + 1
= 31
- Simple Approach: O(n2)
- Total number of term in series = n+1
- Calculate each term separately, and add them:
- Second Approach: O(n)
It is observed that, given series is Geometric Progression, with common ratio = (K – 1)/K
So, above expression can be simplified as:
- Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int sum( int k, int n)
{
int sum
= pow (k, n + 1)
- pow (k - 1, n + 1);
return sum;
}
int main()
{
int n = 3;
int K = 3;
cout << sum(K, n);
}
|
Java
class GFG
{
static int sum( int k, int n)
{
int sum = ( int )(Math.pow(k, n + 1 ) -
Math.pow(k - 1 , n + 1 ));
return sum;
}
public static void main(String args[])
{
int n = 3 ;
int K = 3 ;
System.out.print(sum(K, n));
}
}
|
Python3
def sum (k, n):
sum = ( pow (k, n + 1 ) -
pow (k - 1 , n + 1 ));
return sum ;
n = 3 ;
K = 3 ;
print ( sum (K, n));
|
C#
using System;
class GFG
{
static int sum( int k, int n)
{
int sum = ( int )(Math.Pow(k, n + 1) -
Math.Pow(k - 1, n + 1));
return sum;
}
public static void Main()
{
int n = 3;
int K = 3;
Console.Write(sum(K, n));
}
}
|
PHP
<?php
function sum( $k , $n )
{
$sum = pow( $k , $n + 1) -
pow( $k - 1, $n + 1);
return $sum ;
}
$n = 3;
$K = 3;
echo sum( $K , $n );
|
Javascript
<script>
function sum(k,n)
{
let sum = 0;
for (let i = 0; i <= n; i++) {
let p = 1;
for (let j = 0; j < n - i; j++) {
p = p * k;
}
for (let j = 0; j < i; j++) {
p = p * (k - 1);
}
sum = sum + p;
}
return sum;
}
let n = 3;
let K = 3;
document.write(sum(K, n));
</script>
|
Time Complexity: O( n )
Auxiliary Space: O(1)
- Third Approach (Efficient): O(log n)
Note: Time complexity can further be reduced to O(log(n)), by calculating power in log(n) complexity.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int exponent( int A, int B)
{
if (A == 0)
return 0;
if (B == 0)
return 1;
long y;
if (B % 2 == 0) {
y = exponent(A, B / 2);
y = (y * y);
}
else {
y = A;
y = (y * exponent(A, B - 1));
}
return y;
}
int sum( int k, int n)
{
int sum = exponent(k, n + 1)
- exponent(k - 1, n + 1);
return sum;
}
int main()
{
int n = 3;
int K = 3;
cout << sum(K, n);
}
|
Java
import java.lang.Math;
class GFG
{
static int exponent( int A, int B)
{
if (A == 0 )
return 0 ;
if (B == 0 )
return 1 ;
int y;
if (B % 2 == 0 )
{
y = exponent(A, B / 2 );
y = (y * y);
}
else
{
y = A;
y = (y * exponent(A, B - 1 ));
}
return y;
}
static int sum( int k, int n)
{
int sum = exponent(k, n + 1 )
- exponent(k - 1 , n + 1 );
return sum;
}
public static void main(String[] args)
{
int n = 3 ;
int K = 3 ;
System.out.println(sum(K, n));
}
}
|
Python3
def exponent(A, B):
if (A = = 0 ):
return 0 ;
if (B = = 0 ):
return 1 ;
if (B % 2 = = 0 ):
y = exponent(A, B / 2 );
y = (y * y);
else :
y = A;
y = (y * exponent(A, B - 1 ));
return y;
def sum (k, n):
sum = exponent(k, n + 1 ) - exponent(k - 1 , n + 1 );
return sum ;
n = 3 ;
K = 3 ;
print ( sum (K, n));
|
C#
using System;
class GFG
{
static int exponent( int A, int B)
{
if (A == 0)
return 0;
if (B == 0)
return 1;
int y;
if (B % 2 == 0)
{
y = exponent(A, B / 2);
y = (y * y);
}
else
{
y = A;
y = (y * exponent(A, B - 1));
}
return y;
}
static int sum( int k, int n)
{
int sum = exponent(k, n + 1)
- exponent(k - 1, n + 1);
return sum;
}
public static void Main()
{
int n = 3;
int K = 3;
Console.WriteLine(sum(K, n));
}
}
|
PHP
<?php
function exponent( $A , $B )
{
if ( $A == 0)
return 0;
if ( $B == 0)
return 1;
if ( $B % 2 == 0)
{
$y = exponent( $A , $B / 2);
$y = ( $y * $y );
}
else
{
$y = $A ;
$y = ( $y * exponent( $A , $B - 1));
}
return $y ;
}
function sum( $k , $n )
{
$sum = exponent( $k , $n + 1) -
exponent( $k - 1, $n + 1);
return $sum ;
}
$n = 3;
$K = 3;
echo sum( $K , $n );
?>
|
Javascript
<script>
function exponent(A, B)
{
if (A == 0)
return 0;
if (B == 0)
return 1;
let y;
if (B % 2 == 0)
{
y = exponent(A, parseInt(B / 2, 10));
y = (y * y);
}
else
{
y = A;
y = (y * exponent(A, B - 1));
}
return y;
}
function sum(k, n)
{
let sum = exponent(k, n + 1) -
exponent(k - 1, n + 1);
return sum;
}
let n = 3;
let K = 3;
document.write(sum(K, n));
</script>
|
Time Complexity: O(logn)
Auxiliary Space: O(logn)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...