Reduzca todos los elementos de la array a cero realizando las operaciones dadas tres veces

Dada una array arr[] de tamaño N , la tarea es convertir cada elemento de la array a 0 aplicando las siguientes operaciones exactamente tres veces:

  • Seleccione un subarreglo .
  • Incrementa cada elemento del subarreglo por el múltiplo entero de su longitud.

Finalmente, imprima el primer y último índice del subarreglo involucrado y los elementos agregados a cada índice del subarreglo en cada paso.

Ejemplos:

Entrada: arr[]= {1, 3, 2, 4}
Salida:
Operación 1: 1 1
Elementos agregados: 1
Operación 2: 3 4
Elementos agregados: 4 2 
Operación 3: 2 4
Elementos agregados: -3 -6 -6
Explicación:
Paso 1: seleccione el subarreglo {arr[1]} y agregue -1 al único elemento del subarreglo. Por lo tanto, la array arr[] se modifica a {0, 3, 2, 4}.
Paso 2: Seleccione el subarreglo {arr[3], arr[4]} y agregue {4, 2} a los elementos del subarreglo respectivamente. Por lo tanto, la array arr[] se modifica a {0, 3, 6, 6}.
Paso 3: Seleccione el subarreglo {arr[2], arr[4]} y agregue {-3, -6, -6} a los elementos del subarreglo respectivamente. Por lo tanto, la array arr[] se modifica a {0, 0, 0, 0}

Entrada: arr[] = { 5 }
Salida:
Operación 1 : 1 1
Elementos agregados: -5
Operación 2 : 1 1
Elementos agregados: 5
Operación 3 : 1 1
Elementos agregados: -5

Acercarse:

Operación 1: Seleccione el subarreglo {arr[1], .., arr[N]}. Establecer A[i] = A[i] – N * A[i] = (N – 1) * (-A[i]). 
Después de la operación 1, cada elemento es un múltiplo de (N – 1).
Operación 2: Seleccione el subarreglo {arr[1], .. arr[N – 1]}. Sume/Reste un múltiplo de (N – 1) a todos los valores del subarreglo hasta que se reduzcan a 0.
Operación 3: Seleccione el subarreglo {arr[N]}, de tamaño 1. Sume/Reste un múltiplo de 1 para hacer A[ N] = 0.

    • Imprimir 1 N . Sustraer
    • restar y .
    • restar

C++

// C++ program of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to reduce all
// array elements to zero
void ConvertArray(int arr[], int N)
{
    // If size of array is 1
    if (N == 1) {
 
        // First operation
        cout << "Operation 1 : " << 1
             << " " << 1 << endl;
        cout << "Added elements: "
             << -1 * arr[0] << endl;
        cout << endl;
 
        // 2nd Operation
        cout << "Operation 2 : "
             << 1 << " " << 1 << endl;
        cout << "Added elements: "
             << 1 * arr[0] << endl;
        cout << endl;
 
        // 3rd Operation
        cout << "Operation 3 : "
             << 1 << " " << 1 << endl;
        cout << "Added elements: "
             << -1 * arr[0] << endl;
    }
 
    // Otherwise
    else {
 
        // 1st Operation
        cout << "Operation 1 : "
             << 1 << " " << N << endl;
        cout << "Added elements: ";
        for (int i = 0; i < N; i++) {
            cout << -1 * arr[i] * N << " ";
        }
        cout << endl;
        cout << endl;
 
        // 2nd Operation
        cout << "Operation 2 : "
             << 1 << " " << N - 1 << endl;
        cout << "Added elements: ";
        for (int i = 0; i < N - 1; i++) {
            cout << arr[i] * (N - 1) << " ";
        }
        cout << endl;
        cout << endl;
 
        // 3rd Operation
        cout << "Operation 3 : " << N
             << " " << N << endl;
        cout << "Added elements: ";
        cout << arr[N - 1] * (N - 1) << endl;
    }
}
 
// Driver Code
int main()
{
    // Input
    int arr[] = { 1, 3, 2, 4 };
    int N = sizeof(arr) / sizeof(arr[0]);
 
    // Function call to make all
    // array elements equal to 0
    ConvertArray(arr, N);
 
    return 0;
}

Java

// Java program for the above approach
import java.util.*;
class GFG{
 
  // Function to reduce all
  // array elements to zero
  static void ConvertArray(int arr[], int N)
  {
 
    // If size of array is 1
    if (N == 1) {
 
      // First operation
      System.out.println("Operation 1 : " + 1
                         + " " + 1 );
      System.out.println("Added elements: "
                         + -1 * arr[0] );
      System.out.println();
 
      // 2nd Operation
      System.out.println("Operation 2 : "
                         + 1 + " " + 1 );
      System.out.println("Added elements: "
                         + 1 * arr[0] );
      System.out.println();
 
      // 3rd Operation
      System.out.println("Operation 3 : "
                         + 1 + " " + 1 );
      System.out.println("Added elements: "
                         + -1 * arr[0] );
    }
 
    // Otherwise
    else {
 
      // 1st Operation
      System.out.println("Operation 1 : "
                         + 1 + " " + N );
      System.out.print("Added elements: ");
      for (int i = 0; i < N; i++) {
        System.out.print(-1 * arr[i] * N + " ");
      }
      System.out.println();
      System.out.println();
 
      // 2nd Operation
      System.out.println("Operation 2 : "
                         + 1 + " " + (N - 1) );
      System.out.print("Added elements: ");
      for (int i = 0; i < N - 1; i++) {
        System.out.print(arr[i] * (N - 1) + " ");
      }
      System.out.println();
      System.out.println();
 
      // 3rd Operation
      System.out.println("Operation 3 : " + N
                         + " " + N );
      System.out.print("Added elements: ");
      System.out.println(arr[N - 1] * (N - 1) );
    }
  }
 
  // Driver code
  public static void main(String[] args)
  {
 
    // Input
    int arr[] = { 1, 3, 2, 4 };
    int N = arr.length;
 
    // Function call to make all
    // array elements equal to 0
    ConvertArray(arr, N);
  }
}
 
// This code is contributed by souravghosh0416.

Python3

# Python 3 program of the above approach
 
# Function to reduce all
# array elements to zero
def ConvertArray(arr, N):
   
    # If size of array is 1
    if (N == 1):
       
        # First operation
        print("Operation 1 :",1,1)
        print("Added elements:",-1 * arr[0])
        print("\n",end = "")
 
        # 2nd Operation
        print("Operation 2 :",1,1)
        print("Added elements:",1 * arr[0])
        print("\n",end = "")
 
        # 3rd Operation
        print("Operation 3 :",1,1)
        print("Added elements:",-1 * arr[0])
        print("\n",end = "")
 
    # Otherwise
    else:
       
        # 1st Operation
        print("Operation 1 :",1,N)
        print("Added elements:",end = " ")
        for i in range(N):
            print(-1 * arr[i] * N,end = " ")
        print("\n")
 
        # 2nd Operation
        print("Operation 2 :",1,N - 1)
        print("Added elements:",end = " ")
        for i in range(N - 1):
            print(arr[i] * (N - 1),end = " ")
        print("\n")
 
        # 3rd Operation
        print("Operation 3 : ",N,N)
        print("Added elements:",end = " ")
        print(arr[N - 1] * (N - 1))
 
# Driver Code
if __name__ == '__main__':
   
    # Input
    arr =  [1, 3, 2, 4]
    N =  len(arr)
     
    # Function call to make all
    # array elements equal to 0
    ConvertArray(arr, N)
     
    # This code is contributed by ipg2016107.

C#

// C# program for the above approach
using System;
class GFG{
 
  // Function to reduce all
  // array elements to zero
  static void ConvertArray(int[] arr, int N)
  {
 
    // If size of array is 1
    if (N == 1) {
 
      // First operation
      Console.WriteLine("Operation 1 : " + 1
                         + " " + 1 );
      Console.WriteLine("Added elements: "
                         + -1 * arr[0] );
      Console.WriteLine();
 
      // 2nd Operation
      Console.WriteLine("Operation 2 : "
                         + 1 + " " + 1 );
      Console.WriteLine("Added elements: "
                         + 1 * arr[0] );
      Console.WriteLine();
 
      // 3rd Operation
      Console.WriteLine("Operation 3 : "
                         + 1 + " " + 1 );
      Console.WriteLine("Added elements: "
                         + -1 * arr[0] );
    }
 
    // Otherwise
    else {
 
      // 1st Operation
      Console.WriteLine("Operation 1 : "
                         + 1 + " " + N );
      Console.Write("Added elements: ");
      for (int i = 0; i < N; i++) {
        Console.Write(-1 * arr[i] * N + " ");
      }
      Console.WriteLine();
      Console.WriteLine();
 
      // 2nd Operation
      Console.WriteLine("Operation 2 : "
                         + 1 + " " + (N - 1) );
      Console.Write("Added elements: ");
      for (int i = 0; i < N - 1; i++) {
        Console.Write(arr[i] * (N - 1) + " ");
      }
      Console.WriteLine();
      Console.WriteLine();
 
      // 3rd Operation
      Console.WriteLine("Operation 3 : " + N
                         + " " + N );
      Console.Write("Added elements: ");
      Console.WriteLine(arr[N - 1] * (N - 1) );
    }
  }
 
// Driver Code
public static void Main(string[] args)
{
   
    // Input
    int[] arr = { 1, 3, 2, 4 };
    int N = arr.Length;
 
    // Function call to make all
    // array elements equal to 0
    ConvertArray(arr, N);
}
}
 
// This code is contributed by code_hunt.

Javascript

<script>
// javascript program for the above approach
 
    // Function to reduce all
    // array elements to zero
    function ConvertArray(arr, N)
    {
 
        // If size of array is 1
        if (N == 1)
        {
 
            // First operation
            document.write("Operation 1 : " + 1 + " " + 1+ "<br/>");
            document.write("Added elements: " + -1 * arr[0]+"<br/>");
            document.write("<br/>");
 
            // 2nd Operation
            document.write("Operation 2 : " + 1 + " " + 1+"<br/>");
            document.write("Added elements: " + 1 * arr[0]+"<br/>");
            document.write("<br/>");
 
            // 3rd Operation
            document.write("Operation 3 : " + 1 + " " + 1+"<br/>");
            document.write("Added elements: " + -1 * arr[0]+"<br/>");
        }
 
        // Otherwise
        else
        {
 
            // 1st Operation
            document.write("Operation 1 : " + 1 + " " + N+"<br/>");
            document.write("Added elements: ");
            for (i = 0; i < N; i++) {
                document.write(-1 * arr[i] * N + " ");
            }
            document.write("<br/>");
            document.write("<br/>");
 
            // 2nd Operation
            document.write("Operation 2 : " + 1 + " " + (N - 1)+"<br/>");
            document.write("Added elements: ");
            for (i = 0; i < N - 1; i++) {
                document.write(arr[i] * (N - 1) + " ");
            }
            document.write("<br/>");
            document.write("<br/>");
 
            // 3rd Operation
            document.write("Operation 3 : " + N + " " + N+"<br/>");
            document.write("Added elements: ");
            document.write(arr[N - 1] * (N - 1)+"<br/>");
        }
    }
 
    // Driver code
     
        // Input
        var arr = [ 1, 3, 2, 4 ];
        var N = arr.length;
 
        // Function call to make all
        // array elements equal to 0
        ConvertArray(arr, N);
 
// This code is contributed by todaysgaurav.
</script>
Producción: 

Operation 1 : 1 4
Added elements: -4 -12 -8 -16 

Operation 2 : 1 3
Added elements: 3 9 6 

Operation 3 : 4 4
Added elements: 12

 

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

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