# Assign other value to a variable from two possible values

• Difficulty Level : Easy
• Last Updated : 04 Jul, 2022

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)

Solution 3:

Using the multiplication operator, we can perform the operation:

x = a * b / x

This way the content of x will alternate between a and b.

This approach has only one step:
Step 1: 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 change "``;``    ``cout << ``"\nx is : "` `<< x;``}` `//This code is contributed by phasing17`

## Javascript

 `// JavaScript program to change value of x``// according to its current value.` `// Function to alternate the values``function` `alternate(a, b,x )``{``    ``x = a * b / x;``    ``return` `x;``    ` `}` `// Main function``let a = -10;``let b = 15;``let x = a;``console.log(``"x is : "` `+ x);` `x = alternate(a, b, x);` `console.log(``"After change "``);``console.log(``"x is : "` `+ x);` `// This code is contributed by phasing17`

Output:

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

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

My Personal Notes arrow_drop_up