Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <bitset>
- #include <climits>
- #include <cmath>
- #include <cstdio>
- #include <cstring>
- #include <deque>
- #include <fstream>
- #include <functional>
- #include <iomanip>
- #include <iostream>
- #include <queue>
- #include <map>
- #include <numeric>
- #include <set>
- #include <sstream>
- #include <stack>
- #include <stdio.h>
- #include <utility>
- #include <vector>
- #define endl '\n'
- #define MOD 1000000007
- #define maxN 505
- using namespace std;
- typedef long long ll;
- class fraccion
- {
- public:
- fraccion();
- void setnum(ll n);
- void setden(ll d);
- void simplify();
- void suma(ll n1, ll d1);
- void resta(ll n1, ll d1);
- void multi(ll n1, ll d1);
- void div(ll n1, ll d1);
- void cambio();
- ll getnum();
- ll getden();
- ll entero();
- ll gcd(ll n, ll d);
- ll num, den;
- };
- fraccion::fraccion()
- {
- num = 0;
- den = 1;
- }
- void fraccion::setnum(ll n)
- {
- num = n;
- }
- void fraccion::setden(ll d)
- {
- den = d;
- }
- void fraccion::simplify()
- {
- ll g = gcd(num,den);
- num /= g;
- den /= g;
- }
- void fraccion::suma(ll n1, ll d1)
- {
- num = num*d1 + n1*den;
- den *= d1;
- simplify();
- }
- void fraccion::resta(ll n1, ll d1)
- {
- num = num*d1 - n1*den;
- den *= d1;
- simplify();
- }
- void fraccion::multi(ll n1, ll d1)
- {
- num *= n1;
- den *= d1;
- simplify();
- }
- void fraccion::div(ll n1, ll d1)
- {
- num *= d1;
- den *= n1;
- simplify();
- }
- ll fraccion::gcd(ll n, ll d)
- {
- if (d) return gcd(d, n%d);
- return n;
- }
- ll fraccion::entero()
- {
- ll m = num%den;
- ll aux = (num-m)/den;
- num = m;
- return aux;
- }
- void fraccion::cambio()
- {
- ll temp = num;
- num = den;
- den = temp;
- }
- ll fraccion::getnum()
- {
- return num;
- }
- ll fraccion::getden()
- {
- return den;
- }
- void partialQuotient(fraccion aux)
- {
- while(aux.getnum())
- {
- cout << aux.entero();
- if(!aux.getnum())
- cout << endl;
- else
- {
- cout << " ";
- aux.cambio();
- }
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- //ofstream cout("salida.txt");
- ll n, m, x;
- fraccion x1, x2, y, aux;
- while(cin >> n >> m)
- {
- ll arrn[n];
- ll arrm[m];
- for(int i = 0; i<n; i++)
- cin >> arrn[i];
- for(int i = 0; i<m; i++)
- cin >> arrm[i];
- x1.setnum(arrn[n-1]);
- for(int i = n-2; i>=0; i--)
- {
- x1.cambio();
- x1.suma(arrn[i],1);
- }
- x2.setnum(arrm[m-1]);
- for(int i = m-2; i>=0; i--)
- {
- x2.cambio();
- x2.suma(arrm[i],1);
- }
- aux.setnum(x1.getnum());
- aux.setden(x1.getden());
- aux.suma(x2.getnum(),x2.getden());
- partialQuotient(aux);
- aux.setnum(x1.getnum());
- aux.setden(x1.getden());
- aux.resta(x2.getnum(),x2.getden());
- partialQuotient(aux);
- aux.setnum(x1.getnum());
- aux.setden(x1.getden());
- aux.multi(x2.getnum(),x2.getden());
- partialQuotient(aux);
- aux.setnum(x1.getnum());
- aux.setden(x1.getden());
- aux.div(x2.getnum(),x2.getden());
- partialQuotient(aux);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement