import
java.util.*;
@SuppressWarnings
(
"unchecked"
)
class
GFG
{
static
ArrayList<Integer>[] makeEqualAtFront(ArrayList<Integer> A,
ArrayList<Integer> B)
{
int
n = A.size();
int
m = B.size();
int
diff = Math.abs(n - m);
if
(n < m) {
for
(var i =
0
; i < diff; i++) {
A.add(
0
,
0
);
}
}
else
{
for
(var i =
0
; i < diff; i++) {
B.add(
0
,
0
);
}
}
ArrayList<Integer>[] l1 =
new
ArrayList[
2
];
l1[
0
] = A;
l1[
1
] = B;
return
l1;
}
static
ArrayList<Integer>[] makeEqualAtback(ArrayList<Integer> A,
ArrayList<Integer> B)
{
int
n = A.size();
int
m = B.size();
int
diff = Math.abs(n - m);
if
(n < m) {
for
(var i =
0
; i < diff; i++) {
A.add(
0
);
}
}
else
{
for
(var i =
0
; i < diff; i++) {
B.add(
0
);
}
}
ArrayList<Integer>[] l1 =
new
ArrayList[
2
];
l1[
0
] = A;
l1[
1
] = B;
return
l1;
}
static
void
findSum(String s1, String s2)
{
int
i;
ArrayList<Integer> Ints1 =
new
ArrayList<Integer>();
ArrayList<Integer> Ints2 =
new
ArrayList<Integer>();
ArrayList<Integer> Fracs1 =
new
ArrayList<Integer>();
ArrayList<Integer> Fracs2 =
new
ArrayList<Integer>();
for
(i = s1.length() -
1
; i > -
1
; i--) {
if
(s1.charAt(i) ==
'.'
) {
break
;
}
Fracs1.add(s1.charAt(i) -
'0'
);
}
i--;
for
(; i > -
1
; i--) {
Ints1.add(s1.charAt(i) -
'0'
);
}
for
(i = s2.length() -
1
; i > -
1
; i--) {
if
(s2.charAt(i) ==
'.'
) {
break
;
}
Fracs2.add(s2.charAt(i) -
'0'
);
}
i--;
for
(; i > -
1
; i--) {
Ints2.add(s2.charAt(i) -
'0'
);
}
ArrayList<Integer>[] res1 = makeEqualAtFront(Fracs1, Fracs2);
ArrayList<Integer>[] res2 = makeEqualAtback(Ints1, Ints2);
Fracs1 = res1[
0
];
Fracs2 = res1[
1
];
Ints1 = res2[
0
];
Ints2 = res2[
1
];
int
n = Fracs1.size();
int
m = Fracs2.size();
i =
0
;
int
carry =
0
;
while
(i < n && i < m) {
int
sum = Fracs1.get(i) + Fracs2.get(i) + carry;
Fracs1.set(i, sum %
10
);
carry = (sum >=
10
) ?
1
:
0
;
i++;
}
int
N = Ints1.size();
int
M = Ints2.size();
i =
0
;
while
(i < N && i < M) {
int
sum = Ints1.get(i) + Ints2.get(i) + carry;
Ints1.set(i, sum %
10
);
carry = (sum >=
10
) ?
1
:
0
;
i++;
}
if
(carry !=
0
)
Ints1.add(carry);
Collections.reverse(Ints1);
Collections.reverse(Fracs1);
for
(
int
i1 : Ints1) System.out.print(i1);
System.out.print(
"."
);
for
(
int
i1 : Fracs1) System.out.print(i1);
}
public
static
void
main(String[] args)
{
String str1 =
"584506134.87368350839565308"
;
String str2 =
"30598657.0330473560587475634983"
;
findSum(str1, str2);
}
}