-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomplexNumberMultiply.cpp
76 lines (75 loc) · 1.64 KB
/
complexNumberMultiply.cpp
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
string complexNumberMultiply(string a, string b) {
string ret;
string::iterator itr1,itr2;
itr1=a.begin();
itr2=b.begin();
int f=0;
int av=0,bv=0,ai=0,bi=0;
for(;*itr1!='+';++itr1)
if(*itr1=='-')
f=1;
else
av=av*10+(int)*itr1-48;
if(f)
av*=-1;f=0;
for(;*itr2!='+';++itr2)
if(*itr2=='-')
f=1;
else
bv=bv*10+(int)*itr2-48;
if(f)
bv*=-1;f=0;
++itr1;++itr2;
for(;*itr1!='i';++itr1)
if(*itr1=='-')
f=1;
else
ai=ai*10+(int)*itr1-48;
if(f)
ai*=-1;f=0;
for(;*itr2!='i';++itr2)
if(*itr2=='-')
f=1;
else
bi=bi*10+(int)*itr2-48;
if(f)
bi*=-1;f=0;
int ansr=av*bv-ai*bi;int ansi =av*bi+ai*bv;
if(ansr<0)
{
ret.push_back('-');
ansr*=-1;
}
string t;
if(ansr)
{
while(ansr)
{
t.push_back(ansr%10+48);
ansr/=10;
}
for(int i=t.length()-1;i>=0;--i)
ret.push_back(t.at(i));
}
else
ret.push_back(48);
ret.push_back('+');t.clear();
if(ansi<0)
{
ret.push_back('-');
ansi*=-1;
}
if(ansi)
{
while(ansi)
{
t.push_back(ansi%10+48);
ansi/=10;
}
for(int i=t.length()-1;i>=0;--i)
ret.push_back(t.at(i));
}
else ret.push_back(48);
ret.push_back('i');
return ret;
}