Dados tres números enteros A , D y R que representan el primer término, la diferencia común y la razón común de una progresión aritmética-geométrica infinita , la tarea es encontrar la suma de la progresión aritmética-geométrica infinita dada tal que el valor absoluto de R siempre es menor que 1 .
Ejemplos:
Entrada: A = 0, D = 1, R = 0,5
Salida: 0,666667Entrada: A = 2, D = 3, R = -0,3
Salida: 0,549451
Enfoque: Una sucesión aritmético-geométrica es el resultado de la multiplicación término por término de la serie de progresión geométrica con los términos correspondientes de una serie de progresión aritmética . La serie está dada por:
a, (a + d) * r, (a + 2 * d) * r 2 , (a + 3 * d) * r 3 , …, [a + (N − 1) * d] * r (N − 1) .
El término N de la Progresión Aritmético -Geométrica viene dado por:
=>
La suma de la Progresión Aritmético-Geométrica viene dada por:
=>
donde, |r| < 1.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to find the sum of the // infinite AGP void sumOfInfiniteAGP(double a, double d, double r) { // Stores the sum of infinite AGP double ans = a / (1 - r) + (d * r) / pow((1-r),2); // Print the required sum cout << ans; } // Driver Code int main() { double a = 0, d = 1, r = 0.5; sumOfInfiniteAGP(a, d, r); return 0; } // Correction done by Yogesh0903
Java
import java.lang.Math; // Java program for the above approach class GFG{ // Function to find the sum of the // infinite AGP static void sumOfInfiniteAGP(double a, double d, double r) { // Stores the sum of infinite AGP double ans = a / (1 - r) + (d * r) / Math.pow((1-r),2); // Print the required sum System.out.print(ans); } // Driver Code public static void main(String[] args) { double a = 0, d = 1, r = 0.5; sumOfInfiniteAGP(a, d, r); } } // This code is contributed by 29AjayKumar // Correction done by Yogesh0903
Python3
# Python3 program for the above approach # Function to find the sum of the # infinite AGP def sumOfInfiniteAGP(a, d, r): # Stores the sum of infinite AGP ans = a / (1 - r) + (d * r) / (1 - r)**2; # Print the required sum print (round(ans,6)) # Driver Code if __name__ == '__main__': a, d, r = 0, 1, 0.5 sumOfInfiniteAGP(a, d, r) # This code is contributed by mohit kumar 29. # Correction done by Yogesh0903
C#
// C# program for the above approach using System; class GFG { // Function to find the sum of the // infinite AGP static void sumOfInfiniteAGP(double a, double d, double r) { // Stores the sum of infinite AGP double ans = a / (1 - r) + (d * r) / Math.Pow((1-r),2); // Print the required sum Console.Write(ans); } // Driver Code public static void Main() { double a = 0, d = 1, r = 0.5; sumOfInfiniteAGP(a, d, r); } } // This code is contributed by ukasp. // Correction done by Yogesh0903
Javascript
<script> // Javascript program for the above approach // Function to find the sum of the // infinite AGP function sumOfInfiniteAGP(a, d, r) { // Stores the sum of infinite AGP let ans = a / (1 - r) + (d * r) / Math.pow((1-r),2); // Print the required sum document.write(ans) } // Driver Code let a = 0, d = 1, r = 0.5; sumOfInfiniteAGP(a, d, r); // This code is contributed by Hritik </script>
0.666667
Complejidad Temporal: O(1)
Espacio Auxiliar: O(1), ya que no se ha tomado ningún espacio extra.