Dados dos números A y B , la tarea es encontrar la suma de los dos números dados.
Ejemplos:
Entrada: A = 5, B = 6
Salida: suma = 11
Entrada: A = 4, B = 11
Salida: suma = 15
Método 1: usar el operador de suma: aquí simplemente use el operador de suma entre dos números e imprima la suma del número.
suma = A + B
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to add two number // using addition operator #include <iostream> using namespace std; // Function to return sum // of two number int addTwoNumber(int A, int B) { // Return sum of A and B return A + B; } // Driver Code int main() { // Given two number int A = 4, B = 11; // Function call cout << "sum = " << addTwoNumber(A, B); return 0; }
sum = 15
Complejidad del tiempo: O(1)
Espacio Auxiliar: O(1)
Método 2: usar el operador de resta : aquí simplemente use el operador de resta entre dos números, dos veces para que menos-menos se multiplique y produzca el operador + y devuelva la suma del número.
suma = A – (-B)
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to add two number // using subtraction operator #include <iostream> using namespace std; // Function to return sum // of two number int addTwoNumber(int A, int B) { // Return sum of A and B return A - (-B); } // Driver Code int main() { // Given two number int A = 4, B = 11; // Function call cout << "sum = " << addTwoNumber(A, B); return 0; }
sum = 15
Complejidad del tiempo: O(1)
Espacio Auxiliar: O(1)
Método 3: usar el operador de incremento/decremento : aquí use el operador de incremento/decremento mientras un número se reduce a cero y en otro número se incrementa en uno cuando el primer número se reduce en uno, devuelve el segundo número.
mientras (B > 0) {
A++;
B-;
}
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to add two number using // increment/decrement operator #include <iostream> using namespace std; // Function to return sum // of two number int addTwoNumber(int A, int B) { // When A is positive while (A > 0) { A--; B++; } // When A is negative while (A < 0) { A++; B--; } // Return sum of A and B return B; } // Driver Code int main() { // Given two number int A = 4, B = 11; // Function call cout << "sum = " << addTwoNumber(A, B); return 0; }
sum = 15
Complejidad de tiempo: O(N) donde N es el min(A,B)
Espacio auxiliar: O(1)
Método 4: usar el método printf() : Aquí , el especificador «%*s» imprime el valor de una variable, el valor de los tiempos variables y printf devuelve cuántos caracteres se imprimen en la pantalla.
printf(“%*s%*s”, A, “”, B, “”);
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to add two number // using printf method #include <iostream> using namespace std; // Function to return sum // of two number int addTwoNumber(int A, int B) { // Return sum of A and B return printf("%*s%*s", A, "", B, ""); } // Driver Code int main() { // Given two number int A = 4, B = 11; // Function call printf("sum = %d", addTwoNumber(A, B)); return 0; }
sum = 15
Complejidad del tiempo: O(1)
Espacio Auxiliar: O(1)
Método 5: utilizando el método Half Adder : se puede obtener una suma de dos bits realizando Bitwise XOR (^) de los dos bits. El bit de acarreo se puede obtener realizando Bitwise AND(&) de dos bits.
Arriba hay una lógica simple de Half Adder que se puede usar para agregar 2 bits individuales. Podemos extender esta lógica para números enteros. Si x e y no tienen bits establecidos en la(s) misma(s) posición(es), entonces XOR bit a bit (^) de xey da la suma de xey. Para incorporar bits de configuración comunes, se utiliza AND (&). AND bit a bit de xey da todos los bits de acarreo. Calculamos (x & y) << 1 y lo sumamos a x ^ y para obtener el resultado requerido.
Suma = A & B;
Llevar = x ^ y
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to add two number // using half adder method #include <iostream> using namespace std; // Function to return sum // of two number int addTwoNumber(int A, int B) { // Iterate till there is no carry while (B != 0) { // Carry now contains common // set bits of A and B int carry = A & B; // Sum of bits of A and B // where at least one of the // bits is not set A = A ^ B; // Carry is shifted by one so // that adding it to A gives // the required sum B = carry << 1; } return A; } // Driver Code int main() { // Given two number int A = 4, B = 11; // Function call printf("sum = %d", addTwoNumber(A, B)); return 0; }
sum = 15
Complejidad de tiempo: O (logn)
Espacio Auxiliar: O(1)
Método 6: uso de exponencial y logaritmo: la idea es encontrar el exponencial de los dos números dados e imprimir el logarítmico del resultado.
printf(“%g\n”, log(exp(A) * exp(B)));
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to add two number // using log and exponential #include <bits/stdc++.h> using namespace std; // Function to return sum // of two number int addTwoNumber(int A, int B) { // Return sum of A and B return log(exp(A) * exp(B)); } // Driver Code int main() { // Given two number int A = 4, B = 11; // Function call printf("sum = %d", addTwoNumber(A, B)); return 0; }
sum = 15
Complejidad de tiempo: O (logn)
Espacio Auxiliar: O(1)
Método 7 – usando Recursión :
- Obtenga los números A y B cuya suma se va a calcular.
- Caso base: si A es mayor que 0, devuelve B.
if(A > 0) { return B; }
3 . Llamada recursiva: actualice A a (A&B)<<1 y B a A ^ B y llame recursivamente para obtener el valor actualizado.
recursive_function((A & B) << 1, A ^ B);
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to add two number // using Recursion #include <iostream> // Function to return sum // of two number int addTwoNumber(int A, int B) { // Base Case if (!A) return B; // Recursive Call else return addTwoNumber((A & B) << 1, A ^ B); } // Driver Code int main() { // Given two number int A = 4, B = 11; // Function call printf("sum = %d", addTwoNumber(A, B)); return 0; }
sum = 15
Complejidad de tiempo: O (logn)
Espacio auxiliar: O (logn)
Método 8 : usar este puntero
Tomando dos números x e y del usuario y la tarea es encontrar la suma de los dos números dados usando este puntero.
Ejemplo:
aporte:
Introduzca dos números: 5
4
producción:
La suma es: 9
Esto se puede hacer accediendo al miembro de datos de un objeto usando este puntero y realizando una operación de suma entre ellos.
C++
// CPP program for above approach #include <iostream> using namespace std; class A { int a, b, sum; public: A(int x, int y) { a = x; b = y; } // Using this pointer to // access variable void calcSum() { sum = this->a + this->b; } void showSum() { cout << "Sum is: " << sum << endl; } }; // Driver Code int main() { int x, y; cout << "Enter Two Numbers: "; x = 4, y = 5; A a(x, y); a.calcSum(); a.showSum(); return 0; }
Enter Two Numbers: Sum is: 9
Complejidad del tiempo: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por shivanisinghss2110 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA