Producto de números complejos usando tres operaciones de multiplicación

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>
Producción: 

-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

Deja una respuesta

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