Related Articles

# Assign other value to a variable from two possible values

• Difficulty Level : Easy
• Last Updated : 05 May, 2021

Suppose a variable x can have only two possible values a and b, and you wish to assign to x the value other than its current one. Do it efficiently without using any conditional operator.
Note: We are not allowed to check current value of x.
Examples:

Input : a = 10, b = 15, x = a
Output : x = 15
Explanation x = 10, currently x has value of a (which is 10), we need to change it to 15.
Input : a = 9, b = 11, x = b
Output : x = 9

We could solve this problem using if condition, but we are not allowed to do that.

```if (x == a)
x = b;
else x = a;```

We could have used Ternary operator, it also checks the current value of x and based on that it assigns new value. So we cannot use this approach as well

`x = x == a ? b : a;`

But, we are not allowed to check value of x, so none of the above solutions work.
Solution 1: Using arithmetic operators only we can perform this operation

`x = a + b - x`

This way the content of x will alternate between a and b every time it gets executed

## C++

 `// CPP program to change value of x``// according to its current value.``#include ``using` `namespace` `std;` `// Function to alternate the values``void` `alternate(``int``& a, ``int``& b, ``int``& x)``{``    ``x = a + b - x;``}` `// Main function``int` `main()``{``    ``int` `a = -10;``    ``int` `b = 15;``    ``int` `x = a;``    ``cout << ``"x is : "` `<< x;` `    ``alternate(a, b, x);` `    ``cout << ``"\nAfter change "``;``    ``cout << ``"\nx is : "` `<< x;``}`

## Java

 `// Java program to change value of x``// according to its current value.``import` `java.util.*;` `class` `solution``{` `// Function to alternate the values``static` `void` `alternate(``int` `a, ``int` `b, ``int` `x)``{``    ``x = a + b - x;``    ``System.out.println(``"After change"``+``"\n"``+``" x is : "``+x);``}` `// Main function``public` `static` `void` `main(String args[])``{``    ``int` `a = -``10``;``    ``int` `b = ``15``;``    ``int` `x = a;``    ``System.out.println(``"x is : "``+x);``    ``alternate(a, b, x);``}``}`

## Python3

 `# Python3 program to change value``# of x according to its current value.` `# Function to alternate the values``def` `alternate(a,b,x):``    ``x ``=` `a``+``b``-``x``    ``print``(``"After change x is:"``,x)`  `# Driver code``if` `__name__``=``=``'__main__'``:``    ``a ``=` `-``10``    ``b ``=` `15``    ``x ``=` `a``    ``print``(``"x is:"``,x)``    ``alternate(a,b,x)` `# This code is contributed by``# Shrikant13`

## C#

 `// C# program to change value of x``// according to its current value.` `using` `System;``class` `gfg``{`` ``// Function to alternate the values`` ``public` `void` `alternate(``ref` `int` `a, ``ref` `int` `b, ``ref` `int` `x)``   ``//'ref' indicates the references`` ``{``    ``x = a + b - x;`` ``}``}` `// Main function``class` `geek``{`` ``public` `static` `int` `Main()`` ``{``    ``gfg g = ``new` `gfg();``    ``int` `a = -10;``    ``int` `b = 15;``    ``int` `x = a;``    ``Console.WriteLine(``"x is : {0}"` `, x);` `    ``g.alternate(``ref` `a, ``ref` `b, ``ref` `x);` `    ``Console.WriteLine (``"After change "``);``    ``Console.WriteLine(``"x is : {0}"``, x);``    ``return` `0;`` ``}``}``//This code is contributed by Soumik`

## PHP

 ``

## Javascript

 ``
Output:
```x is : -10
After change
x is : 15```

Time Complexity: The time complexity of this approach is O(1)
Space Complexity: The space complexity of this approach is O(1)
Solution 2: A better and efficient approach is using the bitwise XOR operation.
x = a^b^x

## C++

 `// CPP program to change value of x``// according to its current value.``#include ``using` `namespace` `std;` `// Function to alternate the values``void` `alternate(``int``& a, ``int``& b, ``int``& x)``{``    ``x = a ^ b ^ x;``}` `// Main function``int` `main()``{``    ``int` `a = -10;``    ``int` `b = 15;``    ``int` `x = a;``    ``cout << ``"x is : "` `<< x;` `    ``alternate(a, b, x);` `    ``cout << ``"\nAfter exchange "``;``    ``cout << ``"\nx is : "` `<< x;``    ` `    ``return` `0;``}`

## Java

 `// Java program to change value of x``// according to its current value.` `class` `GFG {``// Function to alternate the values` `    ``static` `int` `alternate(``int` `a, ``int` `b, ``int` `x) {``        ``return` `x = a ^ b ^ x;``    ``}` `// Main function``    ``public` `static` `void` `main(String[] args) {``        ``int` `a = -``10``;``        ``int` `b = ``15``;``        ``int` `x = a;``        ``System.out.print(``"x is : "` `+ x);` `        ``x = alternate(a, b, x);` `        ``System.out.print(``"\nAfter exchange "``);``        ``System.out.print(``"\nx is : "` `+ x);` `    ``}``}` `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 program to change value of x``# according to its current value.` `# Function to alternate the values``def` `alternate(a, b, x):``    ``x ``=` `a ^ b ^ x``    ``print``(``"After exchange"``)``    ``print``(``"x is"``, x)` `# Driver code``a ``=` `-``10``b ``=` `15``x ``=` `a``print``(``"x is"``, x)``alternate(a, b, x)` `# This code is contributed``# by Shrikant13`

## C#

 `    ` `// C# program to change value of x``// according to its current value.``using` `System;``public` `class` `GFG {``// Function to alternate the values` `    ``static` `int` `alternate(``int` `a, ``int` `b, ``int` `x) {``        ``return` `x = a ^ b ^ x;``    ``}` `// Main function``    ``public` `static` `void` `Main() {``        ``int` `a = -10;``        ``int` `b = 15;``        ``int` `x = a;``        ``Console.Write(``"x is : "` `+ x);` `        ``x = alternate(a, b, x);` `        ``Console.Write(``"\nAfter exchange "``);``        ``Console.Write(``"\nx is : "` `+ x);` `    ``}``}``/*This code is contributed by Rajput-Ji*/`

## PHP

 ``

## Javascript

 ``
Output:
```x is : -10
After exchange
x is : 15```

Time Complexity: The time complexity of this approach is O(1)
Space Complexity: The space complexity of this approach is O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up