Find the sum of n terms of the series 1 , 2a , 3a2 , 4a3 , 5a4 , ... - GeeksforGeeks

23 Dec, 2021
Given a series . and the value of a. Find the sum of the first n term of the series.
Examples:
Input: a = 3, n = 4Output: 142
Input: a = 5, n = 1Output: 1
Brute Force Approach:
A simple approach can be iterating N terms of the series and adding them to calculate the sum for any value of a. Follow the steps below to understand the approach:
For each iteration:
Calculate an [ n = 0 ].Multiply an with (n+1).Add (n+1)*an to sum and increment n by 1.Repeat the above processes n times.
Calculate an [ n = 0 ].
Multiply an with (n+1).
Add (n+1)*an to sum and increment n by 1.
Repeat the above processes n times.
Illustration:
a = 3 and n = 4
Loop will be executed n number of times i.e 4 in this case.
Loop 1: Initially the value of a = 1, n = 0, sum = 0
an = 30      = 1an * (n+1) = 30 * (0+1)                = 1 * (1)                = 1sum = sum + an * (n+1)        = 0 + 1        = 1Increment n by 1.
an = 30      = 1
an * (n+1) = 30 * (0+1)                = 1 * (1)                = 1
sum = sum + an * (n+1)        = 0 + 1        = 1
Increment n by 1.
Loop 2: The value of a = 3, n = 1, sum = 1
an = 31     = 3an * (n+1) = 31 * (1+1)                = 3 * (2)                = 6sum = sum + an * (n+1)       = 1 + 6       = 7Increment value of n by 1.
an = 31     = 3
an * (n+1) = 31 * (1+1)                = 3 * (2)                = 6
sum = sum + an * (n+1)       = 1 + 6       = 7
Increment value of n by 1.
Loop 3: The value of a = 3, n = 2, sum = 7
an = 32     = 9an * (n+1) = 32 * (2+1)                 = 9 * (3)                 = 27sum = sum + an * (n+1)        = 7 + 27        = 34Increment n by 1.
an = 32     = 9
an * (n+1) = 32 * (2+1)                 = 9 * (3)                 = 27
sum = sum + an * (n+1)        = 7 + 27        = 34
Increment n by 1.
Loop 4: The value of a = 3, n = 3, sum = 34
an = 33      = 27an * (n+1) = 33 * (3+1)                 = 27 * (4)                 = 108sum = sum + an * (n+1)        = 34 + 108        = 142Increment the value of n by 1.
an = 33      = 27
an * (n+1) = 33 * (3+1)                 = 27 * (4)                 = 108
sum = sum + an * (n+1)        = 34 + 108        = 142
Increment the value of n by 1.
Below is the implementation of the above approach: 
C++
Java
Python3
C#
Javascript
// C++ implementation for the// approach#include <bits/stdc++.h>using namespace std; // Function to calculate// the sumvoid calcSum(int a, int n){  // Edge Cases  if (n < 0)  {    cout << "Invalid Input";    return;  }   if (a == 0 || n == 1)  {    cout << 1;    return;  }   // Initialize the variables  int Sum = 0;   // Calculate Sum upto N terms  for(int i = 0; i < n; i++)  {    int r = pow(a, (i)) * (i + 1);    Sum += r;  }   // Print Sum  cout << Sum;} // Driver Codeint main(){  int a = 3;  int n = 4;     // Invoke calcSum function with  // values of a and n  calcSum(a, n);  return 0;}
// Java implementation for the// approachimport java.util.*; class GFG{ // Function to calculate// the sumstatic void calcSum(int a, int n){     // Edge Cases  if (n < 0)  {    System.out.print("Invalid Input");    return;  }   if (a == 0 || n == 1)  {    System.out.print(1);    return;  }   // Initialize the variables  int Sum = 0;   // Calculate Sum upto N terms  for(int i = 0; i < n; i++)  {    int r = (int) (Math.pow(a, (i)) * (i + 1));    Sum += r;  }   // Print Sum  System.out.print(Sum);} // Driver Codepublic static void main(String[] args){  int a = 3;  int n = 4;     // Invoke calcSum function with  // values of a and n  calcSum(a, n);}} // This code is contributed by 29AjayKumar
# Python 3 implementation for the# approach # Function to calculate# the sumdef calcSum(a, n):     # Edge Cases    if (n < 0):        print("Invalid Input")        return     if (a == 0 or n == 1):         print(1)        return     # Initialize the variables    Sum = 0     # Calculate Sum upto N terms    for i in range(n):        r = pow(a, (i)) * (i + 1)        Sum += r     # Print Sum    print(Sum) # Driver Codeif __name__ == "__main__":     a = 3    n = 4     # Invoke calcSum function with    # values of a and n    calcSum(a, n)     # This code is contributed by ukasp.
// C# program to find GCD of two// numbersusing System;using System.Collections; class GFG { // Function to calculate// the sumstatic void calcSum(int a, int n){  // Edge Cases  if (n < 0)  {    Console.Write("Invalid Input");    return;  }   if (a == 0 || n == 1)  {    Console.Write(1);    return;  }   // Initialize the variables  int Sum = 0;   // Calculate Sum upto N terms  for(int i = 0; i < n; i++)  {    int r = (int)Math.Pow(a, (i)) * (i + 1);    Sum += r;  }   // Print Sum  Console.Write(Sum);} // Driver methodpublic static void Main(){    int a = 3;    int n = 4;       // Invoke calcSum function with    // values of a and n    calcSum(a, n);}} // This code is contributed by Samim Hossain Mondal.
<script> // JavaScript implementation for the // approach // Function to calculate// the sumfunction calcSum(a, n){         // Edge Cases    if (n < 0)    {        document.write("Invalid Input");        return;    }     if (a == 0 || n == 1)    {        document.write(1);        return;    }     // Initialize the variables    let Sum = 0;     // Calculate Sum upto N terms    for(let i = 0; i < n; i++)    {        let r = Math.pow(a, (i)) * (i + 1);        Sum += r;    }     // Print Sum    document.write(Sum);} // Driver Codelet a = 3;let n = 4; // Invoke calcSum function with// values of a and ncalcSum(a, n); // This code is contributed by Potta Lokesh </script>
Output:
142
Time Complexity: O(n)Auxiliary Space: O(1)
Efficient Approach
In this approach, an efficient solution is proposed using the concept of Geometric progression. The sum of the series of n terms in a Geometric Progression (G.P.) with first term a and common ratio r is given as:
Let’s use this concept to reach a solution to the problem.
Let 
Clearly nth term is 
.     (1)
Multiply both sides with ‘a’, we get,
    (2)
Subtracting equation (2) from (1), we get
Clearly this is the Geometric Progression (G.P.) of n terms with first term 1 and common ration a.
G.P. of n terms with first term a and common ratio r is:
Using the above formula, we have
Dividing both sides by (1 – a), we get
Therefore, the sum of the series  is 
For a != 1 the formula for sum of the series is:
For a = 1 the formula for sum of the series is:The series reduces to sum of first n natural numbers and the formula becomes-
Illustration:
For a  = 3, n = 4
Since a != 1, therefore use the formula
Substituting the values of a and n in the above formula, we get
S = -20 – (-162)
S = 142
So, the sum of the series  with value of a = 3 and n = 4 is 142.
Below is the implementation of the above approach: 
C++
Java
Python3
C#
Javascript
// C++ program to implement// the above approach#include <bits/stdc++.h>using namespace std; // Function to calculate// the sumvoid calcSum(int a, int n){  // Edge Cases  if (n < 0)  {    cout << "Invalid Input";    return;  }   if (a == 0 || n == 1)  {    cout << 1;    return;  }   // Sum of First N Natural Numbers  // In case a = 1  if (a == 1)  {    // Avoiding Overflow    if (n % 2 == 0)      cout << (n / 2) * (n + 1);     else      cout << ((n + 1) / 2) * n;  }   // Calculate Sum with the help  // of formula  int r = pow(a, n);  int d = pow(a - 1, 2);  int Sum = (1 - r * (1 + n - n * a)) / d;   // Print Sum  cout << Sum;} // Driver Codeint main(){  int a = 3;  int n = 4;     // Invoke calcSum function  // with values of a and n  calcSum(a, n);  return 0;}
// Java program to implement// the above approachclass GFG {     // Function to calculate    // the sum    public static void calcSum(int a, int n)    {               // Edge Cases        if (n < 0) {            System.out.println("Invalid Input");            return;        }         if (a == 0 || n == 1) {            System.out.println(1);            return;        }         // Sum of First N Natural Numbers        // In case a = 1        if (a == 1) {            // Avoiding Overflow            if (n % 2 == 0)                System.out.println((n / 2) * (n + 1));             else                System.out.println(((n + 1) / 2) * n);        }         // Calculate Sum with the help        // of formula        int r = (int) Math.pow(a, n);        int d = (int) Math.pow(a - 1, 2);        int Sum = (1 - r * (1 + n - n * a)) / d;         // Print Sum        System.out.println(Sum);    }     // Driver Code    public static void main(String args[]) {        int a = 3;        int n = 4;         // Invoke calcSum function        // with values of a and n        calcSum(a, n);    }} // This code is contributed by saurabh_jaiswal.
# Python program to implement# the above approach # Function to calculate# the sumdef calcSum(a, n):       # Edge Cases    if (n < 0):        print("Invalid Input");        return;     if (a == 0 or n == 1):        print(1);        return;     # Sum of First N Natural Numbers    # In case a = 1    if (a == 1):               # Avoiding Overflow        if (n % 2 == 0):            print((n // 2) * (n + 1));         else:            print(((n + 1) // 2) * n);     # Calculate Sum with the help    # of formula    r =  pow(a, n);    d = pow(a - 1, 2);    Sum = (1 - r * (1 + n - n * a)) // d;     # PrSum    print(Sum); # Driver Codeif __name__ == '__main__':    a = 3;    n = 4;     # Invoke calcSum function    # with values of a and n    calcSum(a, n); # This code is contributed by 29AjayKumar
// C# program to implement// the above approach using System;class GFG {     // Function to calculate    // the sum    public static void calcSum(int a, int n)    {               // Edge Cases        if (n < 0) {            Console.WriteLine("Invalid Input");            return;        }         if (a == 0 || n == 1) {            Console.WriteLine(1);            return;        }         // Sum of First N Natural Numbers        // In case a = 1        if (a == 1) {            // Avoiding Overflow            if (n % 2 == 0)                Console.WriteLine((n / 2) * (n + 1));             else                Console.WriteLine(((n + 1) / 2) * n);        }         // Calculate Sum with the help        // of formula        int r = (int) Math.Pow(a, n);        int d = (int) Math.Pow(a - 1, 2);        int Sum = (1 - r * (1 + n - n * a)) / d;         // Print Sum        Console.WriteLine(Sum);    }     // Driver Code    public static void Main() {        int a = 3;        int n = 4;         // Invoke calcSum function        // with values of a and n        calcSum(a, n);    }} // This code is contributed by gfgking.
<script>// Javascript program to implement// the above approach // Function to calculate// the sumfunction calcSum(a, n){  // Edge Cases  if (n < 0)  {    document.write("Invalid Input");    return;  }   if (a == 0 || n == 1)  {    document.write(1);    return;  }   // Sum of First N Natural Numbers  // In case a = 1  if (a == 1)  {    // Avoiding Overflow    if (n % 2 == 0)      document.write((n / 2) * (n + 1));     else      document.write(((n + 1) / 2) * n);  }   // Calculate Sum with the help  // of formula  let r = Math.pow(a, n);  let d = Math.pow(a - 1, 2);  let Sum = (1 - r * (1 + n - n * a)) / d;   // Print Sum  document.write(Sum);} // Driver Codelet a = 3;let n = 4;   // Invoke calcSum function// with values of a and ncalcSum(a, n); // This code is contributed by Samim Hossain Mondal.</script>
Output:
142
Time Complexity: O(1)
Auxiliary Space: O(1)
lokeshpotta20
samim2000
ukasp
29AjayKumar
_saurabh_jaiswal
gfgking
as5853535
kk9826225
Sequence and Series
series
series-sum
Mathematical
Pattern Searching
Searching
Searching
Mathematical
series
Pattern Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Algorithm to solve Rubik's Cube
Fizz Buzz Implementation
Program to print prime numbers from 1 to N.
Find all pairs in an Array in sorted order with minimum absolute difference
Modular multiplicative inverse
KMP Algorithm for Pattern Searching
Rabin-Karp Algorithm for Pattern Searching
Naive algorithm for Pattern Searching
Check if a string is substring of another
Boyer Moore Algorithm for Pattern Searching