Given an array Arr which represent the percentage change. The task is to determine the Percentage increase after these percentage change. Examples:
Input: arr[] = {10, 20, 30, 10}
Output: Percentage change is = 88.76 %
Input: arr[] = {20, 15, 9, 7}
Output: Percentage change is = 60.94 %
Solution without successive change:-
let us take a number N = 120. and percentage changes are given as, arr[] = {10, 20, 30, 10} Now, if we first increase 120 by 10% i.e 120 * 1.1 We get N = 132 again if we increase it by 20% i.e 132 * 1.2 We get N = 158.4 again if we increase it by 30% i.e 158.4 * 1.3 We get N = 205.92 and lastly if we further increase it by 10% i.e 205.92 * 1.1 We get N = 226.51 Now, Percentage change = (226.51 – 120) / 120 = 0.8876 percentage change = 0.8876 * 100 = 88.76 %

- Simply, Apply successive change formula between arr[0] and arr[1] and store the result in result variable
- Now, calculate successive change between result and arr[2] using above formula and store the result in result variable and so on..
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 codeint 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.. |
Python3
# Python implementation of above approachdef 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 codearr = [10, 20, 30, 10];N = len(arr) ;   # Calling functionresult = successiveChange(arr, N);print ("Percentage change is = %.2f" %                       (result), "%");   # This code is contributed # by Shivi_Aggarwal |
C#
// C# implementation of above approachusing 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..?> |
Javascript
// JavaScript implementation of above approachÂ
function successiveChange(arr, N){    let result = 0;       let var1 = arr[0];    let 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 (var i = 2; i < N; i++)        result = (result + arr[i] +                 ((result * arr[i]) / 100));       return result;}Â
// Driver codelet arr = [10, 20, 30, 10];let N = arr.length ;   // Calling functionlet result = successiveChange(arr, N);console.log ("Percentage change is = " + result.toFixed(2) + " %");         // This code is contributed by phasing17 |
Percentage change is = 88.76 %
Time complexity: O(N) where N is the size of the given array
Auxiliary space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
