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