Advertisement
Guest User

Untitled

a guest
Aug 20th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.38 KB | None | 0 0
  1. #include <algorithm>
  2. #include <bitset>
  3. #include <climits>
  4. #include <cmath>
  5. #include <cstdio>
  6. #include <cstring>
  7. #include <deque>
  8. #include <fstream>
  9. #include <functional>
  10. #include <iomanip>
  11. #include <iostream>
  12. #include <queue>
  13. #include <map>
  14. #include <numeric>
  15. #include <set>
  16. #include <sstream>
  17. #include <stack>
  18. #include <stdio.h>
  19. #include <utility>
  20. #include <vector>
  21.  
  22. #define endl '\n'
  23. #define MOD 1000000007
  24. #define maxN 505
  25.  
  26. using namespace std;
  27.  
  28. typedef long long ll;
  29.  
  30. class fraccion
  31. {
  32.     public:
  33.         fraccion();
  34.         void setnum(ll n);
  35.         void setden(ll d);
  36.         void simplify();
  37.         void suma(ll n1, ll d1);
  38.         void resta(ll n1, ll d1);
  39.         void multi(ll n1, ll d1);
  40.         void div(ll n1, ll d1);
  41.         void cambio();
  42.         ll getnum();
  43.         ll getden();
  44.         ll entero();
  45.         ll gcd(ll n, ll d);
  46.         ll num, den;
  47. };
  48.  
  49. fraccion::fraccion()
  50. {
  51.     num = 0;
  52.     den = 1;
  53. }
  54.  
  55. void fraccion::setnum(ll n)
  56. {
  57.     num = n;
  58. }
  59.  
  60. void fraccion::setden(ll d)
  61. {
  62.     den = d;
  63. }
  64.  
  65. void fraccion::simplify()
  66. {
  67.     ll g = gcd(num,den);
  68.     num /= g;
  69.     den /= g;
  70. }
  71.  
  72. void fraccion::suma(ll n1, ll d1)
  73. {
  74.     num = num*d1 + n1*den;
  75.     den *= d1;
  76.  
  77.     simplify();
  78. }
  79.  
  80. void fraccion::resta(ll n1, ll d1)
  81. {
  82.     num = num*d1 - n1*den;
  83.     den *= d1;
  84.  
  85.     simplify();
  86. }
  87.  
  88. void fraccion::multi(ll n1, ll d1)
  89. {
  90.     num *= n1;
  91.     den *= d1;
  92.  
  93.     simplify();
  94. }
  95.  
  96. void fraccion::div(ll n1, ll d1)
  97. {
  98.     num *= d1;
  99.     den *= n1;
  100.  
  101.     simplify();
  102. }
  103.  
  104. ll fraccion::gcd(ll n, ll d)
  105. {
  106.     if (d) return gcd(d, n%d);
  107.     return n;
  108. }
  109.  
  110. ll fraccion::entero()
  111. {
  112.     ll m = num%den;
  113.     ll aux = (num-m)/den;
  114.     num = m;
  115.     return aux;
  116. }
  117.  
  118. void fraccion::cambio()
  119. {
  120.     ll temp = num;
  121.     num = den;
  122.     den = temp;
  123. }
  124.  
  125. ll fraccion::getnum()
  126. {
  127.     return num;
  128. }
  129.  
  130. ll fraccion::getden()
  131. {
  132.     return den;
  133. }
  134.  
  135. void partialQuotient(fraccion aux)
  136. {
  137.     while(aux.getnum())
  138.     {
  139.         cout << aux.entero();
  140.         if(!aux.getnum())
  141.             cout << endl;
  142.         else
  143.         {
  144.             cout << " ";
  145.             aux.cambio();
  146.         }
  147.     }
  148. }
  149.  
  150. int main()
  151. {
  152.     ios_base::sync_with_stdio(false);
  153.     cin.tie(NULL);
  154.  
  155.     //ofstream cout("salida.txt");
  156.  
  157.     ll n, m, x;
  158.     fraccion x1, x2, y, aux;
  159.  
  160.     while(cin >> n >> m)
  161.     {
  162.         ll arrn[n];
  163.         ll arrm[m];
  164.  
  165.         for(int i = 0; i<n; i++)
  166.             cin >> arrn[i];
  167.  
  168.         for(int i = 0; i<m; i++)
  169.             cin >> arrm[i];
  170.  
  171.         x1.setnum(arrn[n-1]);
  172.         for(int i = n-2; i>=0; i--)
  173.         {
  174.             x1.cambio();
  175.             x1.suma(arrn[i],1);
  176.         }
  177.  
  178.         x2.setnum(arrm[m-1]);
  179.         for(int i = m-2; i>=0; i--)
  180.         {
  181.             x2.cambio();
  182.             x2.suma(arrm[i],1);
  183.         }
  184.  
  185.         aux.setnum(x1.getnum());
  186.         aux.setden(x1.getden());
  187.         aux.suma(x2.getnum(),x2.getden());
  188.         partialQuotient(aux);
  189.  
  190.         aux.setnum(x1.getnum());
  191.         aux.setden(x1.getden());
  192.         aux.resta(x2.getnum(),x2.getden());
  193.         partialQuotient(aux);
  194.  
  195.         aux.setnum(x1.getnum());
  196.         aux.setden(x1.getden());
  197.         aux.multi(x2.getnum(),x2.getden());
  198.         partialQuotient(aux);
  199.  
  200.         aux.setnum(x1.getnum());
  201.         aux.setden(x1.getden());
  202.         aux.div(x2.getnum(),x2.getden());
  203.         partialQuotient(aux);
  204.     }
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement