//我使用了C++的类和运算符重载
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
class Rnum{
public:
Rnum(): num(0), denum(0){}
Rnum(int num, int denum)
{
this->num = num;
this->denum = denum;
}
Rnum(const Rnum &r)
{
this->num = r.num;
this->denum = r.denum;
}
void print() const
{
long long n1, n2, n3;
n2 = this->num;
n3 = this->denum;
if(!n3)
{
printf("Inf");
return;
}
n1 = n2 / n3;
n2 %= n3;
if(n1)
{
n2 = n2 < 0 ? -n2 : n2;
n3 = n3 < 0 ? -n3 : n3;
if(n1 < 0)
{
if(n2)
{
printf("(%lld %lld/%lld)", n1, n2, n3);
}
else
{
printf("(%lld)", n1);
}
}
else
{
if(n2)
{
printf("%lld %lld/%lld", n1, n2, n3);
}
else
{
printf("%lld", n1);
}
}
}
else
{
if(!n2)
{
printf("0");
}
else if(n2 < 0 && n3 < 0)
{
n2 = -n2;
n3 = -n3;
printf("%lld/%lld", n2, n3);
}
else if(n2 < 0)
{
printf("(%lld/%lld)", n2, n3);
}
else if(n3 < 0)
{
n2 = -n2;
n3 = -n3;
printf("(%lld/%lld)", n2, n3);
}
else
{
printf("%lld/%lld", n2, n3);
}
}
return;
}
void simplify()
{
long long n1, n2, n3;
if(num > 0 && denum < 0 || num < 0 && denum < 0)
{
num = -num;
denum = -denum;
}
if(!num)
{
return;
}
if(!denum)
{
return;
}
n1 = num > 0 ? num : -num;
n2 = denum > 0 ? denum : -denum;
while(n1 % n2)
{
n3 = n1 % n2;
n1 = n2;
n2 = n3;
}
num /= n2;
denum /= n2;
return;
}
friend Rnum operator+(Rnum r1, Rnum r2);
friend Rnum operator-(Rnum r1, Rnum r2);
friend Rnum operator*(Rnum r1, Rnum r2);
friend Rnum operator/(Rnum r1, Rnum r2);
private:
long long num, denum;
};
Rnum operator + (Rnum r1, Rnum r2)
{
Rnum r3;
r3.num = r1.num * r2.denum + r1.denum * r2.num;
r3.denum = r1.denum * r2.denum;
r3.simplify();
return r3;
}
Rnum operator-(Rnum r1, Rnum r2)
{
Rnum r3;
r3.num = r1.num * r2.denum - r1.denum * r2.num;
r3.denum = r1.denum * r2.denum;
r3.simplify();
return r3;
}
Rnum operator*(Rnum r1, Rnum r2)
{
Rnum r3;
r3.num = r1.num * r2.num;
r3.denum = r1.denum * r2.denum;
r3.simplify();
return r3;
}
Rnum operator/(Rnum r1, Rnum r2)
{
Rnum r3;
r3.num = r1.num * r2.denum;
r3.denum = r1.denum * r2.num;
r3.simplify();
return r3;
}
int main()
{
long long n1, n2, n3, n4;
scanf("%lld/%lld %lld/%lld", &n1, &n2, &n3, &n4);
Rnum r1(n1, n2), r2(n3, n4), r3;
r1.simplify();
r2.simplify();
r3 = r1 + r2;
r1.print();
printf(" + ");
r2.print();
printf(" = ");
r3.print();
putchar('\n');
r3 = r1 - r2;
r1.print();
printf(" - ");
r2.print();
printf(" = ");
r3.print();
putchar('\n');
r3 = r1 * r2;
r1.print();
printf(" * ");
r2.print();
printf(" = ");
r3.print();
putchar('\n');
r3 = r1 / r2;
r1.print();
printf(" / ");
r2.print();
printf(" = ");
r3.print();
putchar('\n');
return 0;
}