สมมติว่าเรามีสองสตริงที่แสดงจำนวนเชิงซ้อน เราต้องแยกวิเคราะห์และทำการคูณจำนวนเชิงซ้อน จากนั้นส่งคืนผลลัพธ์เป็นสตริง
ดังนั้นหากอินพุตเป็นแบบ “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