Para un número positivo dado, necesitamos dividir un número por 3 sin usar ninguno de estos operadores *, /, +, – %
Ejemplos:
Input : 48 Output : 16 Input : 16 Output : 5
Algoritmo
- Tome un número num, suma = 0
- while(num>3), desplaza el número a la izquierda 2 bits y sum = add(num >> 2, sum). Cree una función add(x, y) para sumar dos números por operador bit a bit
- Toma x, y
- ejecutar un ciclo do while hasta que a no sea cero
- a = x & y, b = x ^ y;, y = b;
- después de terminar el ciclo, el valor de retorno de b da la suma de x e y
- Tome AND bit a bit de num con 3
para el nuevo num = add (num >> 2, num & 3) - Después de terminar el ciclo while, imprime el valor de la suma que da el resultado final.
Por ejemplo, si su número es 10, conviértalo a 10 binario => 00001010
Si 10 > 3, cambie el número binario 2 bits, Ahora num será 00000010, es decir, 2
Ahora la suma será 2
num = (cambie el número 2 bits) + (número BITS Y 3)
num = 2+2
Ahora el número será 4 entonces, 4 > 3 => verdadero entonces el bucle se repetirá
4 => 00000100 luego cambiar el número binario 2 bits
Ahora suma = 2 + 1 es decir, sum = 3 (se devuelve este valor)
num = (cambiar el número (00000100) en 2 bits) + (número BITS Y 3)
num = 1 + 0 ,
es decir, resto = 1
CPP
// 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
Este artículo es una contribución de DANISH_RAZA . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA