C++ 中复数乘法
假设我们有两个表示复数的字符串,我们需要解析它们并执行复数乘法,然后将结果返回为字符串。
因此,如果输入类似于“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
广告