Related Articles
Append two elements to make the array satisfy the given condition
• Last Updated : 06 Jan, 2020

Given an array arr[] of non-negative integers, let’s define X as the XOR of all the array elements and S as the sum of all the array elements. The task is to find two elements such that when they are appended to the array S = 2 * X is satisfied for the updated array.

Examples:

Input: arr[] = {1, 7}
Output: 6 14
Initially S = 8, and X = 6. After appending 6
and 14, S_NEW = (8 + 6 + 14) = 28
and X_NEW = (6 ^ 6 ^ 14) = 14
Clearly, S_NEW = 2 * X_NEW

Input: arr[] = {1, 3}
Output: 2 6

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Naive approach: Run two nested loops from 1 to S and check for each pair whether it satisfies the condition or not. This will take O(S2) time.

Efficient approach: It can be observed that if X and S + X are appended to the array then S_NEW = 2 * (S + X) and X_NEW = S + X which satisfy the given condition.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;`` ` `// Function to find the required numbers``void` `findNums(``int` `arr[], ``int` `n)``{`` ` `    ``// Find the sum and xor``    ``int` `S = 0, X = 0;``    ``for` `(``int` `i = 0; i < n; i++) {``        ``S += arr[i];``        ``X ^= arr[i];``    ``}`` ` `    ``// Print the required elements``    ``cout << X << ``" "` `<< (X + S);``}`` ` `// Driver code``int` `main()``{``    ``int` `arr[] = { 1, 7 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(``int``);`` ` `    ``findNums(arr, n);`` ` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach ``class` `GFG ``{``     ` `    ``// Function to find the required numbers ``    ``static` `void` `findNums(``int` `arr[], ``int` `n) ``    ``{ ``     ` `        ``// Find the sum and xor ``        ``int` `S = ``0``, X = ``0``; ``        ``for` `(``int` `i = ``0``; i < n; i++) ``        ``{ ``            ``S += arr[i]; ``            ``X ^= arr[i]; ``        ``} ``     ` `        ``// Print the required elements ``        ``System.out.println(X + ``" "` `+ (X + S)); ``    ``} ``     ` `    ``// Driver code ``    ``public` `static` `void` `main (String[] args)``    ``{ ``        ``int` `arr[] = { ``1``, ``7` `}; ``        ``int` `n = arr.length; ``     ` `        ``findNums(arr, n); ``    ``} ``}`` ` `// This code is contributed by AnkitRai01`

## Python3

 `# Python3 implementation of the approach `` ` `# Function to find the required numbers ``def` `findNums(arr, n) : `` ` `    ``# Find the sum and xor ``    ``S ``=` `0``; X ``=` `0``; ``    ``for` `i ``in` `range``(n) : ``        ``S ``+``=` `arr[i]; ``        ``X ^``=` `arr[i];`` ` `    ``# Print the required elements ``    ``print``(X, X ``+` `S); `` ` `# Driver code ``if` `__name__ ``=``=` `"__main__"` `: `` ` `    ``arr ``=` `[ ``1``, ``7` `]; ``    ``n ``=` `len``(arr); `` ` `    ``findNums(arr, n); ``     ` `# This code is contributed by AnkiRai01`

## C#

 `// C# implementation of the approach ``using` `System;`` ` `class` `GFG ``{``     ` `    ``// Function to find the required numbers ``    ``static` `void` `findNums(``int` `[]arr, ``int` `n) ``    ``{ ``     ` `        ``// Find the sum and xor ``        ``int` `S = 0, X = 0; ``        ``for` `(``int` `i = 0; i < n; i++) ``        ``{ ``            ``S += arr[i]; ``            ``X ^= arr[i]; ``        ``} ``     ` `        ``// Print the required elements ``        ``Console.WriteLine(X + ``" "` `+ (X + S)); ``    ``} ``     ` `    ``// Driver code ``    ``public` `static` `void` `Main()``    ``{ ``        ``int` `[]arr = { 1, 7 }; ``        ``int` `n = arr.Length; ``     ` `        ``findNums(arr, n); ``    ``} ``}`` ` `// This code is contributed by AnkitRai01`
Output:
```6 14
```

Time Complexity: O(n)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up