Imprima todos los prefijos pares e impares distintos Bitwise XOR de los primeros N números naturales

Dado un entero positivo N , la tarea es imprimir todos los valores pares e impares distintos de los XOR bit a bit de prefijo de los primeros N números naturales .

Ejemplos:

Entrada: N = 6
Salida:
Par: 0 4
Impar: 1 3 7
Explicación:
El prefijo Bitwise XOR de los primeros 6 números naturales si {1, 3, 0, 4, 1, 7}.
Los XOR bit a bit de prefijo par son 0, 4.
Los XOR bit a bit de prefijo impar son 1, 3, 7.

Entrada: N = 9
Salida:
Par: 0 4 8
Impar: 1 3 7

 

Enfoque: El problema dado se puede resolver en base a las siguientes observaciones:

  • Si el valor de N módulo 4 es 0 , entonces el valor de Bitwise XOR de los primeros N números naturales es N.
  • Si el valor de N módulo 4 es 1 , entonces el valor de Bitwise XOR de los primeros N números naturales es 1 .
  • Si el valor de N módulo 4 es 2 , entonces el valor de Bitwise XOR de los primeros N números naturales es (N + 1) .
  • Si el valor de N módulo 4 es 3 , entonces el valor de Bitwise XOR de los primeros N números naturales es 0 .

Por lo tanto, a partir del principio anterior, se puede decir que Bitwise XOR como números pares siempre será 0 o múltiplos de 4 , y Bitwise XOR como números impares siempre será 1 o 1 menos que múltiplos de 4 .

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

C++

// C++ program for the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Print all distinct even & odd
// prefix Bitwise XORs from 1 to N
void evenOddBitwiseXOR(int N)
{
 
    cout << "Even: " << 0 << " ";
 
    // Print the even number
    for (int i = 4; i <= N; i = i + 4) {
        cout << i << " ";
    }
 
    cout << "\n";
 
    cout << "Odd: " << 1 << " ";
 
    // Print the odd number
    for (int i = 4; i <= N; i = i + 4) {
        cout << i - 1 << " ";
    }
 
    if (N % 4 == 2)
        cout << N + 1;
    else if (N % 4 == 3)
        cout << N;
}
 
// Driver Code
int main()
{
    int N = 6;
    evenOddBitwiseXOR(N);
 
    return 0;
}

Java

// Java approach for the above approach
class GFG{
 
// Print all distinct even & odd
// prefix Bitwise XORs from 1 to N
static void evenOddBitwiseXOR(int N)
{
    System.out.print("Even: " + 0 + " ");
 
    // Print the even number
    for(int i = 4; i <= N; i = i + 4)
    {
        System.out.print(i + " ");
    }
 
    System.out.print("\n");
 
    System.out.print("Odd: " + 1 + " ");
 
    // Print the odd number
    for(int i = 4; i <= N; i = i + 4)
    {
        System.out.print(i - 1 + " ");
    }
 
    if (N % 4 == 2)
        System.out.print(N + 1);
    else if (N % 4 == 3)
        System.out.print(N);
}
 
// Driver Code
public static void main(String[] args)
{
    int N = 6;
    evenOddBitwiseXOR(N);
}
}
 
// This code is contributed by abhinavjain194

Python3

# Python3 program for the above approach
 
# Print all distinct even & odd
# prefix Bitwise XORs from 1 to N
def evenOddBitwiseXOR(N):
     
    print("Even: ", 0, end = " ")
 
    # Print the even number
    for i in range(4, N + 1, 4):
        print(i, end = " ")
         
    print()
 
    print("Odd: ", 1, end = " ")
 
    # Print the odd number
    for i in range(4, N + 1, 4):
        print(i - 1, end = " ")
     
    if (N % 4 == 2):
        print(N + 1)
    elif (N % 4 == 3):
        print(N)
 
# Driver Code
N = 6
 
evenOddBitwiseXOR(N)
 
# This code is contributed by sanjoy_62

C#

// C# program for the above approach
using System;
 
class GFG{
     
// Print all distinct even & odd
// prefix Bitwise XORs from 1 to N
static void evenOddBitwiseXOR(int N)
{
    Console.Write("Even: " + 0 + " ");
  
    // Print the even number
    for(int i = 4; i <= N; i = i + 4)
    {
        Console.Write(i + " ");
    }
  
   Console.Write("\n");
  
    Console.Write("Odd: " + 1 + " ");
  
    // Print the odd number
    for(int i = 4; i <= N; i = i + 4)
    {
        Console.Write(i - 1 + " ");
    }
  
    if (N % 4 == 2)
        Console.Write(N + 1);
    else if (N % 4 == 3)
        Console.Write(N);
}
 
// Driver code
public static void Main()
{
    int N = 6;
    evenOddBitwiseXOR(N);
}
}
 
// This code is contributed by splevel62

Javascript

<script>
 
// Javascript implementation of the above approach
 
// Print all distinct even & odd
// prefix Bitwise XORs from 1 to N
function evenOddBitwiseXOR(N)
{
    document.write("Even: " + 0 + " ");
  
    // Print the even number
    for(let i = 4; i <= N; i = i + 4)
    {
        document.write(i + " ");
    }
  
    document.write("<br/>");
  
    document.write("Odd: " + 1 + " ");
  
    // Print the odd number
    for(let i = 4; i <= N; i = i + 4)
    {
       document.write(i - 1 + " ");
    }
  
    if (N % 4 == 2)
        document.write(N + 1);
    else if (N % 4 == 3)
        document.write(N);
}
 
  
  // Driver Code
     
    let N = 6;
    evenOddBitwiseXOR(N);
     
</script>
Producción: 

Even: 0 4 
Odd: 1 3 7

 

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

Publicación traducida automáticamente

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