GastonFontenla

Untitled

Jun 13th, 2016
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. include <iostream>
  2. #include <vector>
  3. #include <stdio.h>
  4. #include <iomanip>
  5.  
  6. using namespace std;
  7.  
  8. #define ll long double
  9.  
  10. struct ECUACION
  11. {
  12. /**
  13. Para ecuaciones de la forma:
  14. x = p*A + q*B;
  15. **/
  16. ll x, p, q;
  17. };
  18.  
  19. int main()
  20. {
  21. vector <ll> a, b, v;
  22.  
  23. a = {1, 0};
  24. b = {0, 1};
  25.  
  26. for(int i=1; i<5000; i++)
  27. {
  28. a.push_back((a[i]+a[i-1]));
  29. b.push_back((b[i]+b[i-1]));
  30. }
  31.  
  32. v = vector <ll> (a.size());
  33.  
  34. ll posI, valI, posJ, valJ, posN;
  35.  
  36. cin >> posI >> valI >> posJ >> valJ >> posN;
  37.  
  38. ///Convertir a 0-indexed
  39.  
  40. if(posI > posJ)
  41. {
  42. swap(posI, posJ);
  43. swap(valI, valJ);
  44. }
  45.  
  46. ll menorVal = min(posN, min(posI, posJ));
  47.  
  48. posI += (-menorVal);
  49. posJ += (-menorVal);
  50. posN += (-menorVal);
  51.  
  52. v[posI] = valI;
  53. v[posJ] = valJ;
  54.  
  55. ECUACION eq1;
  56.  
  57. eq1.x = v[posI];
  58. eq1.p = a[posI];
  59. eq1.q = b[posI];
  60.  
  61. ECUACION eq2;
  62.  
  63. eq2.x = v[posJ];
  64. eq2.p = a[posJ];
  65. eq2.q = b[posJ];
  66.  
  67. ll numeradorA = (eq1.x*eq2.q) - (eq2.x*eq1.q);
  68. ll denominadA = (eq1.p*eq2.q) - (eq2.p*eq1.q);
  69. ll A = numeradorA/denominadA;
  70.  
  71. ll numeradorB = (eq2.x - (eq2.p*A));
  72. ll denominadB = eq2.q;
  73. ll B = numeradorB/denominadB;
  74.  
  75. ll resN = A*a[posN] + B*b[posN];
  76. cout << setprecision(200) << resN << endl;
  77.  
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment