以字符串形式给定两个复数。我们的任务是打印这两个复数的乘法。
例子:
Input : str1 = "1+1i"
str2 = "1+1i"
Output : "0+2i"
Here, (1 + i) * (1 + i) =
1 + i2 + 2 * i = 2i or "0+2i"
Input : str1 = "1+-1i"
str2 = "1+-1i"
Output : "0+-2i"
Here, (1 - i) * (1 - i) =
1 + i2 - 2 * i = -2i or "0+-2i"
可以将两个复数相乘:
我们仅基于“ +”和“ i”符号将给定复杂字符串的实部和虚部分开。我们将两个字符串a和b的实部分别存储为x [0]和y [0] ,虚部分别存储为x [1]和y [1] 。然后,在将提取的部分转换为整数之后,根据需要将实部和虚部相乘。然后,我们再次以所需的格式形成返回字符串并返回结果。
Java
// Java program to multiply two complex numbers
// given as strings.
import java.util.*;
import java.lang.*;
public class GfG{
public static String complexNumberMultiply(String a, String b) {
// Spiting the real and imaginary parts
// of the given complex strings based on '+'
// and 'i' symbols.
String x[] = a.split("\\+|i");
String y[] = b.split("\\+|i");
// Storing the real part of complex string a
int a_real = Integer.parseInt(x[0]);
// Storing the imaginary part of complex string a
int a_img = Integer.parseInt(x[1]);
// Storing the real part of complex string b
int b_real = Integer.parseInt(y[0]);
// Storing the imaginary part of complex string b
int b_img = Integer.parseInt(y[1]);
// Returns the product.
return (a_real * b_real - a_img * b_img) + "+" +
(a_real * b_img + a_img * b_real) + "i";
}
// Driver function
public static void main(String argc[]){
String str1 = "1+1i";
String str2 = "1+1i";
System.out.println(complexNumberMultiply(str1, str2));
}
}
C++
// C++ Implementation of the above approach
#include
using namespace std;
string complexNumberMultiply(string a, string b)
{
int i;
string x1;
int temp = 1;
// Traverse both strings, and
// check for negative numbers
for (i = 0; i < a.length(); i++)
{
if (a[i] == '+')
break;
if (a[i] == '-')
{
temp = -1;
continue;
}
x1.push_back(a[i]);
}
// String to int
int t1 = stoi(x1) * temp;
x1.clear();
temp = 1;
for (; i < a.length() - 1; i++)
{
if (a[i] == '-')
{
temp = -1;
continue;
}
x1.push_back(a[i]);
}
int t2 = stoi(x1) * temp;
x1.clear();
temp = 1;
for (i = 0; i < b.length(); i++)
{
if (b[i] == '+')
break;
if (b[i] == '-')
{
temp = -1;
continue;
}
x1.push_back(b[i]);
}
int t3 = stoi(x1) * temp;
x1.clear();
temp = 1;
for (; i < b.length() - 1; i++)
{
if (b[i] == '-')
{
temp = -1;
continue;
}
x1.push_back(b[i]);
}
int t4 = stoi(x1) * temp;
// Real Part
int ans = t1 * t3 - t2 * t4;
string s;
s += to_string(ans);
s += '+';
// Imaginary part
ans = t1 * t4 + t2 * t3;
s += to_string(ans);
s += 'i';
// Return the result
return s;
}
// Driver Code
int main()
{
string str1 = "1+1i";
string str2 = "1+1i";
cout << complexNumberMultiply(str1, str2);
return 0;
// Contributed By Bhavneet Singh
}
Python 3
# Python 3 program to multiply two complex numbers
# given as strings.
def complexNumberMultiply(a, b):
# Spiting the real and imaginary parts
# of the given complex strings based on '+'
# and 'i' symbols.
x = a.split('+')
x[1] = x[1][:-1] # for removing 'i'
y = b.split("+")
y[1] = y[1][:-1] # for removing 'i'
# Storing the real part of complex string a
a_real = int(x[0])
# Storing the imaginary part of complex string a
a_img = int(x[1])
# Storing the real part of complex string b
b_real = int(y[0])
# Storing the imaginary part of complex string b
b_img = int(y[1])
return str(a_real * b_real - a_img * b_img) \
+ "+" + str(a_real * b_img + a_img * b_real) + "i";
# Driver function
str1 = "1 + 1i"
str2 = "1 + 1i"
print(complexNumberMultiply(str1, str2))
# This code is contributed by ANKITKUMAR34
PHP
输出:
0+2i