Dados cuatro números enteros a, b, c y d que representan dos números complejos de la forma (a + bi) y (c + di) , la tarea es encontrar el producto de los números complejos dados usando solo tres operaciones de multiplicación.
Ejemplos:
Entrada: a = 2, b = 3, c = 4 y d = 5
Salida: -7 + 22i
Explicación:
El producto viene dado por:
(2 + 3i)*(4 + 5i) = 2*4 + 4*3i + 2*5i + 3*5*(-1)
= 8 – 15 + (12 + 10)i
= -7 + 22i
Entrada: a = 3, b = 7, c = 6 y d = 2
Salida: 4 + 48i
Enfoque ingenuo: el enfoque ingenuo es multiplicar directamente dos números complejos dados como:
=> (a + bi)*(c + di)
=> a(c + di) + b*i(c + di)
=> a*c + ad*i + b*c*i + b*d* i*i
=> (a*c – b*d) + (a*d + b*c)*i
Las operaciones anteriores requerirían cuatro multiplicaciones para encontrar el producto de dos números complejos.
Enfoque eficiente: el enfoque anterior requería cuatro multiplicaciones para encontrar el producto. Se puede reducir a tres multiplicaciones como:
La multiplicación de dos Números Complejos es como sigue:
(a + bi)*(c + di) = a*c – b*d + (a*d + b*c)i
Simplifica la parte real:
parte real = a*c – b*d
Sea prod1 = a*c y prod2 = b*d.
Así, parte real = prod1 – prod2
Simplifica la parte imaginaria de la siguiente manera:
parte imaginaria = a*d + b*c
Sumando y restando a*c y b*d en la parte imaginaria anterior tenemos,
parte imaginaria = a*c – a*c + a*d + b*c + b*d – b*d,
Al reordenar los términos obtenemos,
=> a*b + b*c + a*d + b*d – a*c – b*d
=> (a + b)*c + (a + b)*d – a*c – b*d
=> (a + b)*(c + d) – a*c – b*d
Sea prod3 = (a + b)*(c + d)
Entonces el imaginario parte viene dada por prod3 – (prod1 + prod2) .
Por lo tanto, necesitamos encontrar el valor de prod1 = a * c , prod2 = b * d y prod3 = ( a + b ) * ( c + d ) .
Entonces, nuestra respuesta final será:
Parte Real = prod1 – prod2
Parte Imaginaria = prod3 – (prod1 + prod2)
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to multiply Complex // Numbers with just three // multiplications void print_product(int a, int b, int c, int d) { // Find value of prod1, prod2 and prod3 int prod1 = a * c; int prod2 = b * d; int prod3 = (a + b) * (c + d); // Real Part int real = prod1 - prod2; // Imaginary Part int imag = prod3 - (prod1 + prod2); // Print the result cout << real << " + " << imag << "i"; } // Driver Code int main() { int a, b, c, d; // Given four Numbers a = 2; b = 3; c = 4; d = 5; // Function Call print_product(a, b, c, d); return 0; }
Java
// Java program for the above approach class GFG{ // Function to multiply Complex // Numbers with just three // multiplications static void print_product(int a, int b, int c, int d) { // Find value of prod1, prod2 and prod3 int prod1 = a * c; int prod2 = b * d; int prod3 = (a + b) * (c + d); // Real Part int real = prod1 - prod2; // Imaginary Part int imag = prod3 - (prod1 + prod2); // Print the result System.out.println(real + " + " + imag + "i"); } // Driver Code public static void main(String[] args) { // Given four numbers int a = 2; int b = 3; int c = 4; int d = 5; // Function call print_product(a, b, c, d); } } // This code is contributed by Pratima Pandey
Python3
# Python3 program for the above approach # Function to multiply Complex # Numbers with just three # multiplications def print_product(a, b, c, d): # Find value of prod1, prod2 # and prod3 prod1 = a * c prod2 = b * d prod3 = (a + b) * (c + d) # Real part real = prod1 - prod2 # Imaginary part imag = prod3 - (prod1 + prod2) # Print the result print(real, " + ", imag, "i") # Driver code # Given four numbers a = 2 b = 3 c = 4 d = 5 # Function call print_product(a, b, c, d) # This code is contributed by Vishal Maurya.
C#
// C# program for the above approach using System; class GFG{ // Function to multiply Complex // Numbers with just three // multiplications static void print_product(int a, int b, int c, int d) { // Find value of prod1, prod2 and prod3 int prod1 = a * c; int prod2 = b * d; int prod3 = (a + b) * (c + d); // Real Part int real = prod1 - prod2; // Imaginary Part int imag = prod3 - (prod1 + prod2); // Print the result Console.Write(real + " + " + imag + "i"); } // Driver Code public static void Main() { int a, b, c, d; // Given four Numbers a = 2; b = 3; c = 4; d = 5; // Function Call print_product(a, b, c, d); } } // This code is contributed by Code_Mech
Javascript
<script> // Javascript program for the above approach // Function to multiply Complex // Numbers with just three // multiplications function print_product( a, b, c, d) { // Find value of prod1, prod2 and prod3 let prod1 = a * c; let prod2 = b * d; let prod3 = (a + b) * (c + d); // Real Part let real = prod1 - prod2; // Imaginary Part let imag = prod3 - (prod1 + prod2); // Print the result document.write(real + " + " + imag + "i"); } // Driver Code let a, b, c, d; // Given four Numbers a = 2; b = 3; c = 4; d = 5; // Function Call print_product(a, b, c, d); </script>
-7 + 22i
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por awasthiakshit11 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA