*Input:* A array arr[] of two elements having value 0 and 1

*Output:* Make both elements 0.

*Specifications:* Following are the specifications to follow.

1) It is guaranteed that one element is 0 but we do not know its position.

2) We can’t say about another element it can be 0 or 1.

3) We can only complement array elements, no other operation like and, or, multi, division, …. etc.

4) We can’t use if, else and loop constructs.

5) Obviously, we can’t directly assign 0 to array elements.

There are several ways we can do it as we are sure that always one Zero is there. Thanks to devendraiiit for suggesting following 3 methods.

**Method 1**

`void` `changeToZero(` `int` `a[2]) ` `{ ` ` ` `a[ a[1] ] = a[ !a[1] ]; ` `} ` ` ` `int` `main() ` `{ ` ` ` `int` `a[] = {1, 0}; ` ` ` `changeToZero(a); ` ` ` ` ` `printf` `(` `" arr[0] = %d \n"` `, a[0]); ` ` ` `printf` `(` `" arr[1] = %d "` `, a[1]); ` ` ` `getchar` `(); ` ` ` `return` `0; ` `} ` |

**Method 2**

`void` `changeToZero(` `int` `a[2]) ` `{ ` ` ` `a[ !a[0] ] = a[ !a[1] ] ` `} ` |

**Method 3**

This method doesn’t even need complement.

`void` `changeToZero(` `int` `a[2]) ` `{ ` ` ` `a[ a[1] ] = a[ a[0] ] ` `} ` |

**Method 4**

Thanks to **purvi** for suggesting this method.

`void` `changeToZero(` `int` `a[2]) ` `{ ` ` ` `a[0] = a[a[0]]; ` ` ` `a[1] = a[0]; ` `} ` |

There may be many more methods.

Please write comments if you find the above codes incorrect, or find other ways to solve the same problem.

## Recommended Posts:

- Swap all odd and even bits
- Count total set bits in all numbers from 1 to n
- Swap bits in a given number
- Add two numbers without using arithmetic operators
- Smallest of three integers without comparison operators
- Program to count number of set bits in an (big) array
- Next higher number with same number of set bits
- Optimization Techniques | Set 1 (Modulus)
- Add 1 to a given number
- Find whether a given number is a power of 4 or not
- Compute the integer absolute value (abs) without branching
- Compute the minimum or maximum of two integers without branching
- Find the two non-repeating elements in an array of repeating elements
- Write an Efficient C Program to Reverse Bits of a Number
- Write an Efficient Method to Check if a Number is Multiple of 3