# Given a set, find XOR of the XOR’s of all subsets.

The question is to find XOR of the XOR’s of all subsets. i.e if the set is {1,2,3}. All subsets are : [{1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}]. Find the XOR of each of the subset and then find the XOR of every subset result.**We strongly recommend you to minimize your browser and try this yourself first.**

This is a very simple question to solve if we get the first step (and only step) right. The solution is XOR is always 0 when n > 1 and Set[0] when n is 1.

## C++

`// C++ program to find XOR of XOR's of all subsets` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Returns XOR of all XOR's of given subset` `int` `findXOR(` `int` `Set[], ` `int` `n)` `{` ` ` `// XOR is 1 only when n is 1, else 0` ` ` `if` `(n == 1)` ` ` `return` `Set[0];` ` ` `else` ` ` `return` `0;` `}` `// Driver program` `int` `main()` `{` ` ` `int` `Set[] = { 1, 2, 3 };` ` ` `int` `n = ` `sizeof` `(Set) / ` `sizeof` `(Set[0]);` ` ` `cout << ` `"XOR of XOR's of all subsets is "` ` ` `<< findXOR(Set, n);` ` ` `return` `0;` `}` |

## C

`// C program to find the XOR of XORs of all subsets` `#include <stdio.h>` `// Returns XOR of all XORs of given subset` `int` `findXOR(` `int` `Set[], ` `int` `n)` `{` ` ` `// XOR is 1 only when n is 1, else 0` ` ` `if` `(n == 1)` ` ` `return` `Set[0];` ` ` `else` ` ` `return` `0;` `}` `// Driver program` `int` `main()` `{` ` ` `int` `Set[] = { 1, 2, 3 };` ` ` `int` `n = ` `sizeof` `(Set) / ` `sizeof` `(Set[0]);` ` ` `printf` `(` `"XOR of XORs of all subsets is %d\n"` `, findXOR(Set, n));` ` ` `return` `0;` `}` `// This code is contributed by phalashi.` |

## Java

`// Java program to find XOR of` `// XOR's of all subsets` `import` `java.util.*;` `class` `GFG {` ` ` `// Returns XOR of all XOR's of given subset` ` ` `static` `int` `findXOR(` `int` `Set[], ` `int` `n)` ` ` `{` ` ` `// XOR is 1 only when n is 1, else 0` ` ` `if` `(n == ` `1` `)` ` ` `return` `Set[` `0` `];` ` ` `else` ` ` `return` `0` `;` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `main(String arg[])` ` ` `{` ` ` `int` `Set[] = { ` `1` `, ` `2` `, ` `3` `};` ` ` `int` `n = Set.length;` ` ` `System.out.print(` `"XOR of XOR's of all subsets is "` ` ` `+ findXOR(Set, n));` ` ` `}` `}` `// This code is contributed by Anant Agarwal.` |

## Python3

`# Python program to find` `# XOR of XOR's of all subsets` `# Returns XOR of all` `# XOR's of given subset` `def` `findXOR(` `Set` `, n):` ` ` `# XOR is 1 only when` ` ` `# n is 1, else 0` ` ` `if` `(n ` `=` `=` `1` `):` ` ` `return` `Set` `[` `0` `]` ` ` `else` `:` ` ` `return` `0` `# Driver code` `Set` `=` `[` `1` `, ` `2` `, ` `3` `]` `n ` `=` `len` `(` `Set` `)` `print` `(` `"XOR of XOR's of all subsets is "` `,` ` ` `findXOR(` `Set` `, n))` `# This code is contributed` `# by Anant Agarwal.` |

## C#

`// C# program to find XOR of` `// XOR's of all subsets` `using` `System;` `class` `GFG {` ` ` `// Returns XOR of all` ` ` `// XOR's of given subset` ` ` `static` `int` `findXOR(` `int` `[] Set, ` `int` `n)` ` ` `{` ` ` `// XOR is 1 only when n` ` ` `// is 1, else 0` ` ` `if` `(n == 1)` ` ` `return` `Set[0];` ` ` `else` ` ` `return` `0;` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `[] Set = { 1, 2, 3 };` ` ` `int` `n = Set.Length;` ` ` `Console.Write(` `"XOR of XOR's of all subsets is "` ` ` `+ findXOR(Set, n));` ` ` `}` `}` `// This code is contributed by nitin mittal` |

## PHP

`<?php` `// PHP program to find XOR` `// of XOR's of all subsets` `// Returns XOR of all` `// XOR's of given subset` `function` `findXOR(` `$Set` `, ` `$n` `)` `{` ` ` ` ` `// XOR is 1 only when` ` ` `// n is 1, else 0` ` ` `if` `(` `$n` `== 1)` ` ` `return` `$Set` `[0];` ` ` `else` ` ` `return` `0;` `}` ` ` `// Driver Code` ` ` `$Set` `= ` `array` `(1, 2, 3);` ` ` `$n` `= ` `count` `(` `$Set` `);` ` ` `echo` `"XOR of XOR's of all subsets is "` ` ` `, findXOR(` `$Set` `, ` `$n` `);` ` ` `// This code is contributed by anuj_67.` `?>` |

## Javascript

`<script>` `// JavaScript program to find XOR of XOR's of all subsets` `// Returns XOR of all XOR's of given subset` `function` `findXOR(Set, n)` `{` ` ` `// XOR is 1 only when n is 1, else 0` ` ` `if` `(n == 1)` ` ` `return` `Set[0];` ` ` `else` ` ` `return` `0;` `}` `// Driver program` ` ` ` ` `let Set = [1, 2, 3];` ` ` `let n = Set.length;` ` ` `document.write(` `"XOR of XOR's of all subsets is "` ` ` `+ findXOR(Set, n));` `// This code is contributed by Surbhi Tyagi` `</script>` |

Output:

XOR of XOR's of all subsets is 0

**Time Complexity: **O(1)

**Auxiliary Space: **O(1)

**Related Problem : **

Sum of XOR of all possible subsets**How does this work?**

The logic goes simple. Let us consider n’th element, it can be included in all subsets of remaining (n-1) elements. The number of subsets for (n-1) elements is equal to 2^{(n-1)} which is always even when n>1. Thus, in the XOR result, every element is included even number of times and XOR of even occurrences of any number is 0.

This article is contributed by **Ekta Goel**. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above