복소수를 나타내는 두 개의 문자열이 있다고 가정하고 이를 구문 분석하고 복소수 곱을 수행한 다음 결과를 문자열로 반환해야 합니다.
따라서 입력이 "1+-1i" 및 "1+-1i"와 같으면 결과는 "0+-2i"가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- aa :=첫 번째 복소수의 실수와 허수 쌍
- bb :=두 번째 복소수의 실수와 허수 쌍
- x :=aa.real * bb.real – aa.img*bb.img
- y :=aa.real * bb.img + aa.img*bb.real
- 문자열을 "x+yi"로 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
#include <bits/stdc++.h> using namespace std; class Solution { public: string complexNumberMultiply(string a, string b) { pair <int, int> aa = parse(a); pair <int, int> bb = parse(b); int x = aa.first * bb.first - aa.second * bb.second; int y = aa.first * bb.second + aa.second * bb.first; return to_string(x) + "+" + to_string(y) + "i"; } pair <int, int> parse(string s){ pair <int, int> ret; int plus = find(s.begin(), s.end(), '+') - s.begin(); int i = find(s.begin(), s.end(), 'i') - s.begin(); ret.first = stoi(s.substr(0, plus)); ret.second = stoi(s.substr(plus + 1, i - plus)); return ret; } }; main(){ Solution ob; cout << (ob.complexNumberMultiply("1+-1i", "1+-1i")); }
입력
"1+-1i" "1+-1i"
출력
0+-2i