Комплексное число можно представить в виде строки в формате "real+imaginaryi", где:
real — это действительная часть и является целым числом в диапазоне [-100, 100].
imaginary — это мнимая часть и является целым числом в диапазоне [-100, 100].
i^2 == -1.
Даны два комплексных числа num1 и num2 в виде строк, верните строку комплексного числа, представляющую их произведение.
Пример:
Input: num1 = "1+1i", num2 = "1+1i"
Output: "0+2i"
Explanation: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i, and you need convert it to the form of 0+2i.
C# решение
сопоставлено/оригиналpublic class Solution {
public string ComplexNumberMultiply(string a, string b) {
var x = a.Split(new char[] { '+', 'i' });
var y = b.Split(new char[] { '+', 'i' });
int a_real = int.Parse(x[0]);
int a_img = int.Parse(x[1]);
int b_real = int.Parse(y[0]);
int b_img = int.Parse(y[1]);
int realPart = a_real * b_real - a_img * b_img;
int imaginaryPart = a_real * b_img + a_img * b_real;
return realPart + "+" + imaginaryPart + "i";
}
}
C++ решение
auto-draft, проверить перед отправкой#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public string ComplexNumberMultiply(string a, string b) {
var x = a.Split(new char[] { '+', 'i' });
var y = b.Split(new char[] { '+', 'i' });
int a_real = int.Parse(x[0]);
int a_img = int.Parse(x[1]);
int b_real = int.Parse(y[0]);
int b_img = int.Parse(y[1]);
int realPart = a_real * b_real - a_img * b_img;
int imaginaryPart = a_real * b_img + a_img * b_real;
return realPart + "+" + imaginaryPart + "i";
}
}
Java решение
сопоставлено/оригиналpublic class Solution {
public String complexNumberMultiply(String a, String b) {
String x[] = a.split("\\+|i");
String y[] = b.split("\\+|i");
int a_real = Integer.parseInt(x[0]);
int a_img = Integer.parseInt(x[1]);
int b_real = Integer.parseInt(y[0]);
int b_img = Integer.parseInt(y[1]);
return (a_real * b_real - a_img * b_img) + "+" + (a_real * b_img + a_img * b_real) + "i";
}
}
JavaScript решение
сопоставлено/оригиналvar complexNumberMultiply = function(a, b) {
const x = a.split('+');
const y = b.split('+');
const a_real = parseInt(x[0]);
const a_img = parseInt(x[1].slice(0, -1));
const b_real = parseInt(y[0]);
const b_img = parseInt(y[1].slice(0, -1));
const realPart = a_real * b_real - a_img * b_img;
const imaginaryPart = a_real * b_img + a_img * b_real;
return realPart + "+" + imaginaryPart + "i";
};
Python решение
сопоставлено/оригиналclass Solution:
def complexNumberMultiply(self, a: str, b: str) -> str:
x = a.split('+')
y = b.split('+')
a_real = int(x[0])
a_img = int(x[1][:-1])
b_real = int(y[0])
b_img = int(y[1][:-1])
real_part = a_real * b_real - a_img * b_img
imaginary_part = a_real * b_img + a_img * b_real
return f"{real_part}+{imaginary_part}i"
Go решение
сопоставлено/оригиналimport (
"fmt"
"strconv"
"strings"
)
func complexNumberMultiply(a string, b string) string {
x := strings.Split(a, "+")
y := strings.Split(b, "+")
a_real, _ := strconv.Atoi(x[0])
a_img, _ := strconv.Atoi(x[1][:len(x[1])-1])
b_real, _ := strconv.Atoi(y[0])
b_img, _ := strconv.Atoi(y[1][:len(y[1])-1])
realPart := a_real * b_real - a_img * b_img
imaginaryPart := a_real * b_img + a_img * b_real
return fmt.Sprintf("%d+%di", realPart, imaginaryPart)
}
Algorithm
Извлечение реальной и мнимой частей:
Разделите строки a и b на реальные и мнимые части, используя символы '+' и 'i'.
Вычисление произведения:
Переведите извлечённые части в целые числа.
Используйте формулу для умножения комплексных чисел: (a+ib)×(x+iy)=ax−by+i(bx+ay).
Формирование строки результата:
Создайте строку в требуемом формате с реальной и мнимой частями произведения и верните её.
😎
Вакансии для этой задачи
Показаны активные вакансии с пересечением по тегам задачи.