Условие
Даны два комплексных числа. Найдите их сумму или разность.
Входные данные
В каждой строке задан пример на сложение или вычитание комплексных чисел. Комплексное число задается в формате $a+bi$ или $a — bi$, где $a$ целое, $b$ целое неотрицательное. Действительная и мнимая часть каждого комплексного числа по модулю не превышает $10^{9}$.
Выходные данные
Для каждого входного примера выведите ответ в отдельной строке.
Тесты
№ |
Входные данные |
Выходные данные |
1 |
2+3i + 7-4i
|
9-1i |
2 |
-1-1i — -1-1i
|
0+0i |
3 | 56743+876i — 1234-124i | 55509+1000i |
4 | 331+10i — 331+10i | 0+0i |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import java.util.*; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String s[] = sc.nextLine().replace("i", "").split(" "); int x1 = 1, x2 = 1; if (s[0].charAt(0) == '-') { s[0] = s[0].substring(1, s[0].length()); x1 *= -1; } if (s[0].indexOf("+") != -1) { x1 *= Integer.parseInt(s[0].split("\\+")[0]); x2 *= Integer.parseInt(s[0].split("\\+")[1]); } else { x1 *= Integer.parseInt(s[0].split("-")[0]); x2 *= Integer.parseInt(s[0].split("-")[1]) * (-1); } int y1 = 1, y2 = 1; if (s[2].charAt(0) == '-') { s[2] = s[2].substring(1, s[2].length()); y1 *= -1; } if (s[2].indexOf('+') != -1) { y1 *= Integer.parseInt(s[2].split("\\+")[0]); y2 *= Integer.parseInt(s[2].split("\\+")[1]); } else { y1 *= Integer.parseInt(s[2].split("-")[0]); y2 *= Integer.parseInt(s[2].split("-")[1]) * (-1); } if (s[1].equals("+")) { x1 = x1 + y1; x2 = x2 + y2; } else { x1 = x1 - y1; x2 = x2 - y2; } String c = (x2 >= 0 ? "+" : ""); System.out.printf("%d%s%di\n", x1, c, x2); } } } |
Решение
Чтобы решить задачу будем разбивать строки на подстроки методом .split() тогда, для каждой строки у нас будет массив из трёх её подстрок, где первый и третий элементы — комплексные числа, а второй — арифметическая операция производимая над ними. Далее оба комплексных числа так же, с помощью .split(), разобьем на реальную и мнимую части и выполним сложение или вычитание соответственных элементов.