Genere una array original a partir de AND bit a bit y OR bit a bit de elementos adyacentes

Dado un número entero N que denota el tamaño de una array y dos arrays que contienen Bitwise AND y Bitwise OR de elementos adyacentes de la array y el primer elemento de la array X , la tarea es construir la array original.

Ejemplos:

Entrada: N = 2, X(Primer elemento) = 2
Bitwise OR = {3}, Bitwise AND = {2}
Salida: {2, 3}

Entrada: N = 3, X(Primer elemento) = 3
Bitwise OR = {4, 3}, Bitwise AND = {3, 4}
Salida: {3, 4, 3}

 

Enfoque : para resolver el problema, siga la siguiente idea:

El problema se puede resolver usando esta relación matemática -> A|B = A + B – A&B

Siga los pasos dados para resolver el problema:

  • Iterar de i = 1 a N-1 para calcular los elementos restantes de la array.
    • Utilice la fórmula indicada anteriormente para generar valores de array
  • Luego imprime todos los elementos

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ code for the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function which will calculate the array elements
vector<int> solve(int N, int X, int OR[], int AND[])
{
    vector<int> a(N);
    a[0] = X;
 
    // Loop to calculate the array elements
    for (int i = 1; i < N; i++) {
        a[i] = OR[i - 1] + AND[i - 1] - a[i - 1];
    }
 
    // Return the original array
    return a;
}
 
// Driver code
int main()
{
    int N = 2, X = 2;
    int OR[] = { 3 };
    int AND[] = { 2 };
 
    // Function call
    vector<int> ans = solve(N, X, OR, AND);
    for (int i : ans)
        cout << i << " ";
 
    return 0;
}

Java

// Java code for the above approach
 
import java.io.*;
 
class GFG {
 
    // Function which will calculate the array elements
    static int[] solve(int N, int X, int[] OR, int[] AND)
    {
        int[] a = new int[N];
        a[0] = X;
 
        // Loop to calculate the array elements
        for (int i = 1; i < N; i++) {
            a[i] = OR[i - 1] + AND[i - 1] - a[i - 1];
        }
 
        // return the original array
        return a;
    }
 
    public static void main(String[] args)
    {
        int N = 2, X = 2;
        int[] OR = { 3 };
        int[] AND = { 2 };
 
        // Function call
        int[] ans = solve(N, X, OR, AND);
        for (int i = 0; i < ans.length; i++) {
            System.out.print(ans[i] + " ");
        }
    }
}
 
// This code is contributed by lokesh (lokeshmvs21).

Javascript

<script>
    // JavaScript code for the above approach
 
 
    // Function which will calculate the array elements
    const solve = (N, X, OR, AND) => {
        let a = new Array(N).fill(0);
        a[0] = X;
 
        // Loop to calculate the array elements
        for (let i = 1; i < N; i++) {
            a[i] = OR[i - 1] + AND[i - 1] - a[i - 1];
        }
 
        // Return the original array
        return a;
    }
 
    // Driver code
 
    let N = 2, X = 2;
    let OR = [3];
    let AND = [2];
 
    // Function call
    let ans = solve(N, X, OR, AND);
    for (let i in ans)
        document.write(`${ans[i]} `);
 
// This code is contributed by rakeshsahni
 
</script>
Producción

2 3 

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

Publicación traducida automáticamente

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