Sum of P terms of an AP if Mth and Nth terms are given

Last Updated : 27 May, 2022

Given Mth and Nth terms of arithmetic progression. The task is to find the sum of its first p terms.
Examples: 
 

Input: m = 6, n = 10, mth = 12, nth = 20, p = 5 
Output:30
Input:m = 10, n = 20, mth = 70, nth = 140, p = 4 
Output:70


 


Approach: Let a is the first term and d is the common difference of the given AP. Therefore 
 

mth term = a + (m-1)d and
nth term = a + (n-1)d


From these two equations, find the value of a and d. Now use the formula of sum of p terms of an AP. 
Sum of p terms = 
 

( p * ( 2*a + (p-1) * d ) ) / 2;


Below is the implementation of the above approach: 
 

C++
// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;

// Function to calculate the value of the
pair<double, double> findingValues(double m,
               double n, double mth, double nth)
{
    // Calculate value of d using formula
    double d = (abs(mth - nth)) / abs((m - 1) - (n - 1));

    // Calculate value of a using formula
    double a = mth - ((m - 1) * d);

    // Return pair
    return make_pair(a, d);
}

// Function to calculate value sum
// of first p numbers of the series
double findSum(int m, int n, int mth, int nth, int p)
{

    pair<double, double> ad;

    // First calculate value of a and d
    ad = findingValues(m, n, mth, nth);

    double a = ad.first, d = ad.second;

    // Calculate the sum by using formula
    double sum = (p * (2 * a + (p - 1) * d)) / 2;

    // Return the sum
    return sum;
}

// Driven Code
int main()
{

    double m = 6, n = 10, mTerm = 12, nTerm = 20, p = 5;

    cout << findSum(m, n, mTerm, nTerm, p) << endl;

    return 0;
}
Java
// Java implementation of the above approach 
import java.util.*;

class GFG
{
    
// Function to calculate the value of the 
static ArrayList<Integer> findingValues(int m, int n, 
                                int mth, int nth) 
{ 
    
    // Calculate value of d using formula 
    int d = (Math.abs(mth - nth)) / 
        Math.abs((m - 1) - (n - 1)); 

    // Calculate value of a using formula 
    int a = mth - ((m - 1) * d);
    ArrayList<Integer> res=new ArrayList<Integer>();
    res.add(a);
    res.add(d);

    // Return pair 
    return res; 
} 

// Function to calculate value sum 
// of first p numbers of the series 
static int findSum(int m, int n, int mth,
                            int nth, int p) 
{ 
    // First calculate value of a and d 
    ArrayList<Integer> ad = findingValues(m, n, mth, nth); 

    int a = ad.get(0);
    int d = ad.get(1);

    // Calculate the sum by using formula 
    int sum = (p * (2 * a + (p - 1) * d)) / 2; 

    // Return the sum 
    return sum; 
} 

// Driver Code
public static void main (String[] args) 
{
    int m = 6, n = 10, mTerm = 12, nTerm = 20, p = 5; 
    System.out.println(findSum(m, n, mTerm, nTerm, p));
}
}

// This code is contributed by chandan_jnu
Python3
# Python3 implementation of the above approach
import math as mt

# Function to calculate the value of the
def findingValues(m, n, mth, nth):

    # Calculate value of d using formula
    d = ((abs(mth - nth)) / 
          abs((m - 1) - (n - 1)))

    # Calculate value of a using formula
    a = mth - ((m - 1) * d)

    # Return pair
    return a, d

# Function to calculate value sum
# of first p numbers of the series
def findSum(m, n, mth, nth, p):
    
    # First calculate value of a and d
    a,d = findingValues(m, n, mth, nth)

    # Calculate the sum by using formula
    Sum = (p * (2 * a + (p - 1) * d)) / 2

    # Return the Sum
    return Sum

# Driver Code
m = 6
n = 10
mTerm = 12
nTerm = 20
p = 5

print(findSum(m, n, mTerm, nTerm, p))

# This code is contributed by 
# Mohit Kumar 29
C#
// C# implementation of the above approach 
using System;
using System.Collections;

class GFG
{
    
// Function to calculate the value of the 
static ArrayList findingValues(int m, int n, 
                                int mth, int nth) 
{ 
    
    // Calculate value of d using formula 
    int d = (Math.Abs(mth - nth)) / 
        Math.Abs((m - 1) - (n - 1)); 

    // Calculate value of a using formula 
    int a = mth - ((m - 1) * d);
    ArrayList res=new ArrayList();
    res.Add(a);
    res.Add(d);

    // Return pair 
    return res; 
} 

// Function to calculate value sum 
// of first p numbers of the series 
static int findSum(int m, int n, int mth,
                            int nth, int p) 
{ 
    // First calculate value of a and d 
    ArrayList ad = findingValues(m, n, mth, nth); 

    int a = (int)ad[0];
    int d = (int)ad[1];

    // Calculate the sum by using formula 
    int sum = (p * (2 * a + (p - 1) * d)) / 2; 

    // Return the sum 
    return sum; 
} 

// Driver Code
public static void Main () 
{
    int m = 6, n = 10, mTerm = 12, nTerm = 20, p = 5; 
    Console.WriteLine(findSum(m, n, mTerm, nTerm, p));
}
}

// This code is contributed by chandan_jnu
PHP
<?php
// PHP implementation of the above approach 

// Function to calculate the value of the 
function findingValues($m, $n, $mth, $nth) 
{ 
    // Calculate value of d using formula 
    $d = (abs($mth - $nth)) / 
          abs(($m - 1) - ($n - 1)); 

    // Calculate value of a using formula 
    $a = $mth - (($m - 1) * $d); 

    // Return pair 
    return array($a, $d); 
} 

// Function to calculate value sum 
// of first p numbers of the series 
function findSum($m, $n, $mth, $nth, $p) 
{ 
    // First calculate value of a and d 
    $ad = findingValues($m, $n, $mth, $nth); 

    $a = $ad[0];
    $d = $ad[1];

    // Calculate the sum by using formula 
    $sum = ($p * (2 * $a + ($p - 1) * $d)) / 2; 

    // Return the sum 
    return $sum; 
} 

// Driver Code 
$m = 6;
$n = 10;
$mTerm = 12;
$nTerm = 20;
$p = 5; 

echo findSum($m, $n, $mTerm, $nTerm, $p);

// This code is contributed by Ryuga
?>
JavaScript
<script>

    // JavaScript implementation of the above approach 
    
    // Function to calculate the value of the 
    function findingValues(m, n, mth, nth) 
    { 

        // Calculate value of d using formula 
        let d = parseInt(
        (Math.abs(mth - nth)) / Math.abs((m - 1) - (n - 1)), 10); 

        // Calculate value of a using formula 
        let a = mth - ((m - 1) * d);
        let res = [];
        res.push(a);
        res.push(d);

        // Return pair 
        return res; 
    } 

    // Function to calculate value sum 
    // of first p numbers of the series 
    function findSum(m, n, mth, nth, p) 
    { 
        // First calculate value of a and d 
        let ad = findingValues(m, n, mth, nth); 

        let a = ad[0];
        let d = ad[1];

        // Calculate the sum by using formula 
        let sum = parseInt((p * (2 * a + (p - 1) * d)) / 2, 10); 

        // Return the sum 
        return sum; 
    } 
    
    let m = 6, n = 10, mTerm = 12, nTerm = 20, p = 5; 
    document.write(findSum(m, n, mTerm, nTerm, p));
    
</script>

Output: 
30

 

Time Complexity: O(1), the code will run in a constant time.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

Comment