Encuentre el término Pth de un GP si se dan los términos Mth y Nth

Dados los términos M-ésimo y N-ésimo de una progresión geométrica . Encuentre su término Pth.
Ejemplos: 
 

Entrada: m = 10, n = 5, mth = 2560, nth = 80, p = 30 
Salida: pth = 81920
Entrada: m = 8, n = 2, mth = 1250, nth = 960, p = 15 
Salida: 24964.4

Enfoque:
Sea a el primer término y r la razón común de la Progresión Geométrica dada. Por lo tanto 
 

mth term = a * pow ( r, (m-1) ) ....... (i) and
nth term = a * pow ( r, (n-1) ) ....... (ii)

Por conveniencia, se supone que m > n 
A partir de estas 2 ecuaciones, 
dado que hemos dado valores m, n, m-ésimo término y n-ésimo término, por lo tanto
 

r = pow(A/B, 1.0/(m-n))


Ahora ponga el valor de r en cualquiera de las dos ecuaciones anteriores y calcule el valor de a.
 

a = m-ésimo término / pow ( r, (m-1) ) o 
a = n-ésimo término / pow ( r, (n-1) )

Después de encontrar el valor de a y r, use la fórmula de Pth términos de un GP.
 

p-ésimo término de GP = a * pow ( r, (p-1.0) );

A continuación se muestra la implementación del enfoque anterior: 
 

C++

#include <cmath>
#include <iostream>
#include <vector>
using namespace std;
 
// function to calculate the value
// of the a and r of geometric series
pair<double, double> values_of_r_and_a(double m,
                                       double n,
                                       double mth,
                                       double nth)
{
    double a, r;
 
    if (m < n) {
        swap(m, n);
        swap(mth, nth);
    }
 
    // calculate value of r using formula
    r = pow(mth / nth, 1.0 / (m - n));
 
    // calculate value of a using value of r
    a = mth / pow(r, (m - 1));
 
    // push both values in the vector and return it
    return make_pair(a, r);
}
 
// function to calculate the value
// of pth term of the series
double FindSum(int m, int n, double mth,
               double nth, int p)
{
    pair<double, double> ar;
 
    // first calculate value of a and r
    ar = values_of_r_and_a(m, n, mth, nth);
 
    double a = ar.first;
    double r = ar.second;
 
    // calculate pth term by using formula
    double pth = a * pow(r, (p - 1.0));
 
    // return the value of pth term
    return pth;
}
 
// Driven program to test
int main()
{
    int m = 10, n = 5, p = 15;
    double mth = 2560, nth = 80;
    cout << FindSum(m, n, mth, nth, p)
         << endl;
 
    return 0;
}

Java

// Java implementation of the above approach
import java.util.ArrayList;
 
class GFG
{
 
// function to calculate the value
// of the a and r of geometric series
static ArrayList values_of_r_and_a(double m, double n,
                                double mth, double nth)
{
    if (m < n)
    {
        double t = m;
        n = m;
        m = t;
        t = mth;
        mth = nth;
        nth = t;
    }
 
    // calculate value of r using formula
    double r = Math.pow(mth / nth, 1.0 / (m - n));
 
    // calculate value of a using value of r
    double a = mth / Math.pow(r, (m - 1));
 
    // push both values in the vector
    // and return it
    ArrayList arr = new ArrayList();
    arr.add(a);
    arr.add(r);
    return arr;
}
 
// function to calculate the value
// of pth term of the series
static double FindSum(double m, double n,
                    double mth, double nth,
                    double p)
{
 
    // first calculate value of a and r
    ArrayList ar = values_of_r_and_a(m, n, mth, nth);
 
    double a = (double)ar.get(0);
    double r = (double)ar.get(1);
 
    // calculate pth term by using formula
    double pth = a * Math.pow(r, (p - 1.0));
 
    // return the value of pth term
    return pth;
}
 
// Driver Code
public static void main(String[] args)
{
    double m = 10;
    double n = 5;
    double p = 15;
    double mth = 2560;
    double nth = 80;
 
    System.out.println((int)FindSum(m, n, mth, nth, p));
}
}
 
// This code has been contributed by 29AjayKumar

Python3

# Python3 program for above approach
 
# function to calculate the value
# of the a and r of geometric series
def values_of_r_and_a(m, n, mth, nth):
 
    a, r = 0.0, 0.0
 
    if (m < n):
        m, n = n, m
        mth, nth = mth, nth
 
    # calculate value of r using formula
    r = pow(mth // nth, 1.0 /(m - n))
 
    # calculate value of a using value of r
    a = mth // pow(r, (m - 1))
 
    # push both values in the vector
    # and return it
    return a, r
 
# function to calculate the value
# of pth term of the series
def FindSum(m, n, mth, nth, p):
 
 
    # first calculate value of a and r
    a,r = values_of_r_and_a(m, n, mth, nth)
 
    # calculate pth term by using formula
    pth = a * pow(r, (p - 1.0))
 
    # return the value of pth term
    return pth
 
# Driven Code
m, n, p = 10, 5, 15
mth, nth = 2560.0, 80.0
print(FindSum(m, n, mth, nth, 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 a and r of geometric series
static ArrayList values_of_r_and_a(double m, double n,
                                double mth, double nth)
{
    if (m < n)
    {
        double t = m;
        n = m;
        m = t;
        t = mth;
        mth = nth;
        nth = t;
    }
 
    // calculate value of r using formula
    double r = Math.Pow(mth / nth, 1.0 / (m - n));
 
    // calculate value of a using value of r
    double a = mth / Math.Pow(r, (m - 1));
 
    // push both values in the vector
    // and return it
    ArrayList arr = new ArrayList();
    arr.Add(a);
    arr.Add(r);
    return arr;
}
 
// function to calculate the value
// of pth term of the series
static double FindSum(double m, double n,
                    double mth, double nth,
                    double p)
{
 
    // first calculate value of a and r
    ArrayList ar = values_of_r_and_a(m, n, mth, nth);
 
    double a = (double)ar[0];
    double r = (double)ar[1];
 
    // calculate pth term by using formula
    double pth = a * Math.Pow(r, (p - 1.0));
 
    // return the value of pth term
    return pth;
}
 
// Driver Code
static void Main()
{
    double m = 10;
    double n = 5;
    double p = 15;
    double mth = 2560;
    double nth = 80;
 
    Console.WriteLine(FindSum(m, n, mth, nth, p));
}
}
 
// This code is contributed by mits

PHP

<?php
// Php implementation of the above approach
function swap($a1, $a2)
{
    $temp = $a1;
    $a1 = $a2;
    $a2 = $temp;
}
 
// function to calculate the value
// of the a and r of geometric series
function values_of_r_and_a($m, $n, $mth, $nth)
{
    if ($m < $n)
    {
        swap($m, $n);
        swap($mth, $nth);
    }
 
    // calculate value of r using formula
    $r = pow($mth / $nth, 1.0 / ($m - $n));
 
    // calculate value of a using value of r
    $a = $mth / pow($r, ($m - 1));
 
    // push both values in the vector
    // and return it
    return array($a, $r);
}
 
// function to calculate the value
// of pth term of the series
function FindSum($m, $n, $mth, $nth, $p)
{
 
    // first calculate value of a and r
    $ar = values_of_r_and_a($m, $n, $mth, $nth);
 
    $a = $ar[0];
    $r = $ar[1];
 
    // calculate pth term by using formula
    $pth = $a * pow($r, ($p - 1.0));
 
    // return the value of pth term
    return $pth;
}
 
// Driver Code
$m = 10;
$n = 5;
$p = 15;
 
$mth = 2560;
$nth = 80;
 
echo FindSum($m, $n, $mth, $nth, $p);
 
// This code is contributed by Ryuga
?>

Javascript

<script>
    // Javascript implementation of the above approach
     
    // function to calculate the value
    // of the a and r of geometric series
    function values_of_r_and_a(m, n, mth, nth)
    {
        if (m < n)
        {
            let t = m;
            n = m;
            m = t;
            t = mth;
            mth = nth;
            nth = t;
        }
 
        // calculate value of r using formula
        let r = Math.pow(mth / nth, 1.0 / (m - n));
 
        // calculate value of a using value of r
        let a = mth / Math.pow(r, (m - 1));
 
        // push both values in the vector
        // and return it
        let arr = [];
        arr.push(a);
        arr.push(r);
        return arr;
    }
 
    // function to calculate the value
    // of pth term of the series
    function FindSum(m, n, mth, nth, p)
    {
 
        // first calculate value of a and r
        let ar = values_of_r_and_a(m, n, mth, nth);
 
        let a = ar[0];
        let r = ar[1];
 
        // calculate pth term by using formula
        let pth = a * Math.pow(r, (p - 1.0));
 
        // return the value of pth term
        return pth;
    }
     
    let m = 10;
    let n = 5;
    let p = 15;
    let mth = 2560;
    let nth = 80;
   
    document.write(FindSum(m, n, mth, nth, p));
     
</script>
Producción: 

81920

 

Complejidad de tiempo: O(log 2 m + log 2 p), donde m y p representan el valor de los números enteros dados.
Espacio auxiliar: O(1), no se requiere espacio adicional, por lo que es una constante.

Publicación traducida automáticamente

Artículo escrito por Vivek.Pandit y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *