using namespace std;
#include <iostream>
#include <conio.h>
#include <math.h>
#include<stdio.h>
class PS
{
	private:
     int t,m;
     public:
     friend ostream& operator<<(ostream& os, PS p);
     friend istream& operator>>(istream& is, PS &p);
     friend PS rutgon(PS p);
     PS operator+(PS p);
     PS operator-(PS p);
     PS operator*(PS p);
     PS operator/(PS p);
};
 
int UCLN(int x,int y)
{
   if(x==0)
     return y;
   if (y==0)
       return x;
   while (x!=y)
      {
        if(x>y)
         x-=y;
        else
         y-=x;
      }
}
istream& operator>>(istream& is, PS &p)
{
	cout<<"\n nhap tu so:";
      is>>p.t;
      cout<<"nhap mau so:";
      cin>>p.m;
      return is;
}
ostream& operator<<(ostream& os, PS p)
{
           os<<p.t<<"/"<<p.m<<endl;
           return os;
}
 
PS rutgon(PS p)
{
      PS q;
      int x;
      x=UCLN(p.t,p.m);
      q.t=p.t/x;
      q.m=p.m/x;
       return q;
} 
PS PS::operator+(PS p)
{
      PS q;
      q.t=t*p.m+p.t*m;
      q.m=m*p.m;
      return rutgon(q);
}
 
PS PS::operator-(PS p)
{
    PS q;
   q.t=t*p.m-p.t*m;
   q.m=m*p.m;
   return rutgon(q);
}
 
PS PS::operator*(PS p)
{
    PS q;
    q.t=t*p.t;
    q.m=m*p.m;
    return rutgon(q);
}
 
PS PS::operator/(PS p)
{
    PS q;
    q.t=t*p.m;
    q.m=m*p.t;
    return rutgon(q);
}
main()
{
     PS p1,p2;
     PS a,b,c,d;
     cin>>p1;
     cout<<"phan so 1:"<<p1;
     cin>>p2;
     cout<<"phan so 2:"<<p2;
     a=p1+p2;
     cout<<"kq cong 2 ps:"<<a;
     b=p1-p2;
     cout<<"kq tru 2 ps:"<<b;
	 c=p1*p2;
     cout<<"kq nhan 2 ps:"<<c;
	 d=p1/p2;
     cout<<"kq chia 2 ps:"<<d;
   getch();
}