XOR of 1 to n Numbers (original) (raw)

Last Updated : 14 Sep, 2024

Given a number n, the task is to find the XOR from 1 to n.
**Examples :

**Input : n = 6
**Output : 7
// 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 = 7

**Input : n = 7
**Output : 0
// 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 6 ^ 7 = 0

Naive Approach - O(n) Time

1- Initialize the result as 0.
1- Traverse all numbers from 1 to n.
2- Do XOR of numbers one by one with results.
3- At the end, return the result.

C++ `

// C++ program to find XOR of numbers // from 1 to n. #include <bits/stdc++.h> using namespace std;

int computeXOR(int n) { int res = 0; for (int i = 1; i <= n; i++) { res = res ^ i; } return res; } int main() { int n = 7; cout << computeXOR(n) << endl; return 0; }

Java

// Given a number n, find the XOR from 1 to n for given n number import java.io.*;

public class GfG { static int computeXor(int n){ int res = 0; for (int i = 1; i <= n; i++) { res = res^i; } return res; } public static void main(String[] args) { int n = 7; System.out.println(computeXor(n)); } }

Python

#defining a function computeXOR def computeXOR(n): res = 0 for i in range(1,n+1): res = res ^ i return res

n = 7 print(computeXOR(n))

C#

// C# program that finds the XOR // from 1 to n for a given number n using System;

public class GFG { static int computeXor(int n) { int res = 0; for (int i = 1; i <= n; i++) { res = res ^ i; // calculate XOR } return res; }

// Driver code
public static void Main(string[] args)
{
    int n = 7;

    // Function call
    int ans = computeXor(n);
    Console.WriteLine(ans);
}

}

// This code is contributed by phasing17

JavaScript

// JavaScript that for a number n // finds the XOR from 1 to n for given n number function computeXor(n){ var res = 0; for (let i = 1; i <= n; i++) res = res^i; // calculate XOR

return res;

}

// Driver Code let n = 7; console.log(computeXor(n));

`

**Time Complexity: O(n)
**Auxiliary Space: O(1)

Expected Approach - O(1) Time

1- Find the remainder of n by moduling it with 4.
2- If rem = 0, then XOR will be same as n.
3- If rem = 1, then XOR will be 1.
4- If rem = 2, then XOR will be n+1.
5- If rem = 3 ,then XOR will be 0.
**How does this work?
When we do XOR of numbers, we get 0 as the XOR value just before a multiple of 4. This keeps repeating before every multiple of 4.

Number Binary-Repr XOR-from-1-to-n

1 1 [0001]
2 10 [0011]
3 11 [0000] <----- We get a 0
4 100 [0100] <----- Equals to n
5 101 [0001]
6 110 [0111]
7 111 [0000] <----- We get 0
8 1000 [1000] <----- Equals to n
9 1001 [0001]
10 1010 [1011]
11 1011 [0000] <------ We get 0
12 1100 [1100] <------ Equals to n

C++ `

// C++ program to find XOR of numbers // from 1 to n. #include<bits/stdc++.h> using namespace std;

// Method to calculate xor int computeXOR(int n) {

// If n is a multiple of 4 if (n % 4 == 0) return n;

// If n%4 gives remainder 1 if (n % 4 == 1) return 1;

// If n%4 gives remainder 2 if (n % 4 == 2) return n + 1;

// If n%4 gives remainder 3 return 0; }

// Driver method int main() { int n = 5; cout<<computeXOR(n); }

// This code is contributed by rutvik_56.

Java

// Java program to find XOR of numbers // from 1 to n.

class GFG { // Method to calculate xor static int computeXOR(int n) { // If n is a multiple of 4 if (n % 4 == 0) return n;

    // If n%4 gives remainder 1
    if (n % 4 == 1)
        return 1;
 
    // If n%4 gives remainder 2
    if (n % 4 == 2)
        return n + 1;
 
    // If n%4 gives remainder 3
    return 0;
}

// Driver method
public static void main (String[] args)
{
     int n = 5;
     System.out.println(computeXOR(n));
}

}

Python 3

Python 3 Program to find

XOR of numbers from 1 to n.

Function to calculate xor

def computeXOR(n) :

# Modulus operator are expensive 
# on most of the computers. n & 3 
# will be equivalent to n % 4.

# if n is multiple of 4 
if n % 4 == 0 :
    return n

# If n % 4 gives remainder 1
if n % 4 == 1 :
    return 1

# If n%4 gives remainder 2 
if n % 4 == 2 :
    return n + 1

# If n%4 gives remainder 3
return 0

Driver Code

if name == "main" :

n = 5

# function calling
print(computeXOR(n))
    

This code is contributed by ANKITRAI1

C#

// C# program to find XOR // of numbers from 1 to n. using System;

class GFG {

// Method to calculate xor
static int computeXOR(int n)
{
    // If n is a multiple of 4
    if (n % 4 == 0)
        return n;

    // If n%4 gives remainder 1
    if (n % 4 == 1)
        return 1;

    // If n%4 gives remainder 2
    if (n % 4 == 2)
        return n + 1;

    // If n%4 gives remainder 3
    return 0;
}

// Driver Code
static public void Main ()
{
    int n = 5;
    Console.WriteLine(computeXOR(n));
}

}

// This code is contributed by ajit

JavaScript

PHP

`

**Time Complexity: O(1)
**Auxiliary Space: O(1)