Programa en C++ para dividir un número por 3 sin utilizar los operadores *, / , +, -, %

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 
 

  1. Tome un número num, suma = 0
  2. 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
  3. Tome AND bit a bit de num con 3 
    para el nuevo num = add (num >> 2, num & 3)
  4. 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;
}
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *