#include<iostream>
using namespace std;
class Polynom
{
private:
int bac;
double *heso;
public:
Polynom(int _bac = 0, double _heso = 0)
{
bac = _bac;
heso = new double [bac];
for(int i = 0; i <= bac; i++)
{
heso[i] = 0.0;
}
if(_heso == 0.0 ) heso[bac] = 1.0;
}
~Polynom()
{
delete[] heso;
}
Polynom(Polynom &a)
{
bac = a.bac;
heso = new double [bac];
for(int i = 0; i <= bac; i++)
{
heso[i] = a.heso[i];
}
}
Polynom operator=(Polynom a)
{
Polynom c;
c.bac = a.bac;
c.heso = new double [c.bac];
for(int i = 0; i <= bac; i++)
{
c.heso[i] = a.heso[i];
}
return c;
}
friend istream &operator >>(istream &is, Polynom &a)
{
is >> a.bac;
a.heso = new double[a.bac];
for(int i = 0 ; i <= a.bac; i++)
is >> a.heso[i];
return is;
}
friend ostream &operator <<(ostream &os, Polynom a)
{
for(int i = 0; i <= a.bac; i++)
os << a.heso[i] << "x^" << a.bac <<"+";
return os;
}
friend Polynom operator +(Polynom a, Polynom b)
{
Polynom c;
if(a.bac > b.bac) c.bac = a.bac;
else c.bac = b.bac;
c.heso = new double [c.bac];
if(a.bac == b.bac)
{
for(int i = 0; i <= c.bac; i++)
{
c.heso[i] = a.heso[i] + b.heso[i];
}
}
if(a.bac > b.bac)
{
for(int i = 0; i <= b.bac; i++)
{
c.heso[i] = a.heso[i] + b.heso[i];
}
for(int i = b.bac+1; i <= a.bac; i++)
c.heso[i] = a.heso[i];
}
if(a.bac < b.bac)
{
for(int i = 0; i <= a.bac; i++)
{
c.heso[i] = a.heso[i] + b.heso[i];
}
for(int i = a.bac+1; i <= c.bac; i++)
c.heso[i] = b.heso[i];
}
return c;
}
friend Polynom operator*(Polynom a, double b)
{
Polynom c;
c.bac = a.bac;
c.heso = new double[c.bac];
for(int i = 0; i <= c.bac; i++)
c.heso[i] = a.heso[i] * b;
return c;
}
double operator()(Polynom a, int n)
{
return a.heso[n];
}
};
class Phanso
{
private:
float tu, mau;
public:
Phanso(float _tu = 0.0, float _mau = 1.0)
{
tu = _tu;
mau = _mau;
}
friend Phanso operator+(Phanso a, Phanso b)
{
Phanso c;
c.tu = (a.tu * b.mau + b.tu * a.mau);
c.mau = (a.mau * b.mau);
return c;
}
friend Phanso operator-(Phanso a, Phanso b)
{
Phanso c;
c.tu = (a.tu * b.mau - b.tu * a.mau);
c.mau = (a.mau * b.mau);
return c;
}
friend Phanso operator*(Phanso a, Phanso b)
{
Phanso c;
c.tu = (a.tu*b.tu);
c.mau = (a.mau * b.mau);
return c;
}
friend Phanso operator/(Phanso a, Phanso b)
{
Phanso c;
c.tu = a.tu * b.mau;
c.mau = a.mau * b.tu;
return c;
}
friend istream &operator >>(istream &is, Phanso a)
{
is >> a.tu;
is >> a.mau;
return is;
}
friend ostream &operator <<(ostream &os, Phanso a)
{
os << a.tu << "/" << a.mau;
return os;
}
};
int main()
{
Polynom a(3,1), b(3,1);
cin >> a;
cin >> b;
cout << a << endl << b << endl;
return 0;
}