Cambio porcentual general de cambios sucesivos

Dada una array Arr que representa el cambio porcentual. La tarea es determinar el porcentaje de aumento después de estos cambios porcentuales.

Ejemplos:

Input:  arr[] = {10, 20, 30, 10}
Output: Percentage change is = 88.76 %

Input:  arr[] = {20, 15, 9, 7}
Output: Percentage change is = 60.94 %

Solución sin cambio sucesivo: –

tomemos un número N = 120.
y los cambios porcentuales se dan como, arr[] = {10, 20, 30, 10}
Ahora, si primero aumentamos 120 en un 10%, es decir, 120 * 1.1 Obtenemos N = 132
nuevamente si lo aumentamos en un 20 %, es decir, 132 * 1,2 Obtenemos N = 158,4
nuevamente si lo aumentamos en un 30 %, es decir, 158,4 * 1,3 Obtenemos N = 205,92
y, por último, si lo aumentamos en un 10 %, es decir, 205,92 * 1,1, obtenemos N = 226.51

Ahora, cambio porcentual = (226,51 – 120) / 120 = 0,8876
cambio porcentual = 0,8876 * 100 = 88,76 %

¿Cómo funciona esta fórmula?
Sea x el valor inicial. Después de un cambio de %, el valor de x pasa a ser (x + x*A/100)
Después de un cambio de % B sucesivo, el valor de x pasa a ser (x + x*A/100) + (x + x*A/100)*B/ 100. Entonces, el incremento en el valor de x es x*(A + B + A*B/100)/100. En términos de porcentaje, podemos decir que el valor se incrementa en (A + B + A*B/100)%

Acercarse:-

  1. Simplemente, aplique la fórmula de cambio sucesivo entre arr[0] y arr[1] y almacene el resultado en la variable de resultado
  2. Ahora, calcule el cambio sucesivo entre result y arr[2] usando la fórmula anterior y almacene el resultado en la variable result y así sucesivamente.
  3. A continuación se muestra la implementación del enfoque anterior:

    C++

    // C++ implementation of above approach
    #include <bits/stdc++.h>
    using namespace std;
      
    float successiveChange(int arr[], int N)
    {
        float var1, var2, result = 0;
      
        var1 = arr[0];
        var2 = arr[1];
      
        // Calculate successive change of 1st 2 change
        result = var1 + var2 + (float(var1 * var2) / 100);
      
        // Calculate successive change
        // for rest of the value
        for (int i = 2; i < N; i++)
            result = result + arr[i] + (float(result * arr[i]) / 100);
      
        return result;
    }
      
    // Driver code
    int main()
    {
        int arr[] = {10, 20, 30, 10};
        int N = sizeof(arr) / sizeof(arr[0]);
      
        // Calling function
        float result = successiveChange(arr, N);
      
        cout << "Percentage change is = " << result << " %";
        return 0;
    }

    Java

      // Java implementation of above approach
      
    import java.io.*;
      
    class GFG {
      
      
    static float successiveChange(int arr[], int N)
    {
        float var1, var2, result = 0;
      
        var1 = arr[0];
        var2 = arr[1];
      
        // Calculate successive change of 1st 2 change
        result = var1 + var2 + ((var1 * var2) / 100);
      
        // Calculate successive change
        // for rest of the value
        for (int i = 2; i < N; i++)
            result = result + arr[i] + ((result * arr[i]) / 100);
      
        return result;
    }
      
    // Driver code
        public static void main (String[] args) {
            int []arr = {10, 20, 30, 10};
        int N = arr.length;
      
        // Calling function
        float result = successiveChange(arr, N);
      
        System.out.println("Percentage change is = " + result + " %");
        }
    }
    // This code is contributed by shs..

    Python 3

    # Python implementation of above approach
    def successiveChange(arr, N):
      
        result = 0;
      
        var1 = arr[0];
        var2 = arr[1];
      
        # Calculate successive change of 1st 2 change
        result = float(var1 + var2 + 
                (float(var1 * var2) / 100));
          
      
        # Calculate successive change
        # for rest of the value
        for i in range(2, N):
            result = (result + arr[i] +
                     (float(result * arr[i]) / 100));
      
        return result;
      
    # Driver code
    arr = [10, 20, 30, 10];
    N = len(arr) ;
      
    # Calling function
    result = successiveChange(arr, N);
    print ("Percentage change is = %.2f" % 
                           (result), "%");
      
    # This code is contributed 
    # by Shivi_Aggarwal
         

    C#

    // C# implementation of above approach
    using System;
      
    class GFG {
      
      
    static float successiveChange(int []arr, int N)
    {
        float var1, var2, result = 0;
      
        var1 = arr[0];
        var2 = arr[1];
      
        // Calculate successive change of 1st 2 change
        result = var1 + var2 + ((var1 * var2) / 100);
      
        // Calculate successive change
        // for rest of the value
        for (int i = 2; i < N; i++)
            result = result + arr[i] + ((result * arr[i]) / 100);
      
        return result;
    }
      
    // Driver code
        public static void Main() {
            int []arr = {10, 20, 30, 10};
        int N = arr.Length;
      
        // Calling function
        float result = successiveChange(arr, N);
      
        Console.WriteLine("Percentage change is = " + result + " %");
        }
    }
    // This code is contributed by shs..

    PHP

    <?php
    // PHP implementation of above approach
      
    function successiveChange($arr, $N)
    {
        $result = 0;
      
        $var1 = $arr[0];
        $var2 = $arr[1];
      
        // Calculate successive change 
        // of 1st 2 change
        $result = $var1 + $var2
                (($var1 * $var2) / 100);
      
        // Calculate successive change
        // for rest of the value
        for ($i = 2; $i <$N; $i++)
            $result = $result + $arr[$i] + 
                    (($result * $arr[$i]) / 100);
      
        return $result;
    }
      
    // Driver code
    $arr = array(10, 20, 30, 10);
    $N = count($arr);
      
    // Calling function
    $result = successiveChange($arr, $N);
      
    echo "Percentage change is = "
                     $result , " %";
      
    // This code is contributed by shs..
    ?>
    Producción:

    Percentage change is = 88.76 %
    

Publicación traducida automáticamente

Artículo escrito por Naman_Garg 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 *