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))
y
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>
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