# Set a variable without using Arithmetic, Relational or Conditional Operator

Given three integers a, b and c where c can be either 0 or 1. Without using any arithmetic, relational and conditional operators set the value of a variable x based on below rules –
```If c = 0
x = a
Else // Note c is binary
x = b.
```
Examples:
```Input: a = 5, b = 10, c = 0;
Output: x = 5

Input: a = 5, b = 10, c = 1;
Output: x = 10
```
Solution 1: Using arithmetic operators If we are allowed to use arithmetic operators, we can easily calculate x by using any one of below expressions –
```x = ((1 - c) * a) + (c * b)

OR

x = (a + b) - (!c * b) - (c * a);

OR

x = (a * !c) | (b * c);
```
 `#include ``using` `namespace` `std; `` ` `int` `calculate(``int` `a, ``int` `b, ``int` `c) ``{ ``    ``return` `((1 - c) * a) + (c * b);  ``} `` ` `int` `main() ``{ ``   ``int` `a = 5, b = 10, c = 0; ``     ` `   ``int` `x = calculate(a, b, c); ``   ``cout << x << endl; ``     ` `   ``return` `0; ``} `

Output:
```5
```
Solution 2: Without using arithmetic operators The idea is to construct an array of size 2 such that index 0 of the array stores value of variable ‘a’ and index 1 value of variable b. Now we return value at index 0 or at index 1 of the array based on value of variable c.
 `#include ``using` `namespace` `std; `` ` `int` `calculate(``int` `a, ``int` `b, ``int` `c) ``{ ``   ``int` `arr[] = {a, b}; ``   ``return` `*(arr + c); ``} `` ` `int` `main() ``{ ``   ``int` `a = 5, b = 10, c = 1; ``     ` `   ``int` `x = calculate(a, b, c); ``   ``cout << x << endl; ``     ` `   ``return` `0; ``} `

Output:
```10
```

Previous
Next
Share your thoughts in the comments
Similar Reads