For a given positive number we need to divide a number by 3 without using any of these *, /, +, – % operators
Examples:
Input : 48 Output : 16 Input : 16 Output : 5
Algorithm
- Take a number num, sum = 0
- while(num>3), shift the number left by 2 bits and sum = add(num >> 2, sum). Create a function add(x, y) for adding two number by bitwise operator
- Take x, y
- run a do while loop till a is not zero
- a = x & y, b = x ^ y;, y = b;
- after terminating loop return value of b which gives sum of x and y
- Take bitwise AND of num with 3
for new num = add( num >> 2, num & 3) - After terminating while loop print the value of sum which give final result .
For example if your number is 10 then convert to binary 10 => 00001010
If 10 > 3 then shift the binary number 2 bits, Now num will be 00000010 i.e, 2
Now sum will be 2
num = (shift the number by 2 bits) + (number BITWISE AND 3)
num = 2+2
Now the number will be 4 then, 4 > 3 => true so loop will be repeated
4 => 00000100 then shift the binary number 2 bits
Now sum = 2 + 1 ie, sum = 3 (this value is returned)
num = (shift the number(00000100) by 2 bits) + (number BITWISE AND 3)
num = 1 + 0
ie remainder = 1
// C++ program for divided a number by // 3 without using operator #include <bits/stdc++.h> using namespace std;
// A function to add 2 numbers without using + int add( int x, int y)
{ int a, b;
do {
a = x & y;
b = x ^ y;
x = a << 1;
y = b;
} while (a);
return b;
} // Function to divide by 3 int divideby3( int num)
{ int sum = 0;
while (num > 3) {
sum = add(num >> 2, sum);
num = add(num >> 2, num & 3);
}
if (num == 3)
sum = add(sum, 1);
return sum;
} // Driver program int main( void )
{ int num = 48;
cout << "The number divided by 3 is " ;
cout << divideby3(num);
return 0;
} |
The number divided by 3 is 16