artemgf

Последовательность Фибоначи

Jun 20th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. #pragma once
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #define _USE_MATH_DEFINES
  4. #include <iostream>
  5. #include <string>
  6. #include <map>
  7. #include <set>
  8. #include <algorithm>
  9. #include <vector>
  10. #include <stdio.h>
  11. #include <cmath>
  12. #include <math.h>
  13. #include <queue>
  14. #include <stack>
  15. #include <climits>
  16. #include <deque>
  17. #include <ctime>
  18. #include <iomanip>
  19. #include <bitset>
  20. #include <unordered_map>
  21. #include <unordered_set>
  22.  
  23. using namespace std;
  24.  
  25. typedef long long ll;
  26. typedef unsigned long long ull;
  27. typedef unsigned int ui;
  28.  
  29. #define mh() make_heap()
  30. #define poph() pop_heap()
  31. #define pushh() push_heap()
  32. #define sor(n) n.begin(), n.end()
  33. #define rsor(n) n.rbegin(), n.rend()
  34. #define mp make_pair
  35. #define files freopen("input.txt", "rt", stdin); freopen("output.txt", "wt", stdout)
  36. #define p(T) pair<T,T>
  37. #define toch(x) cout.precision(x), cout.setf(ios::fixed)
  38. #define znac(l) abs(l)/l
  39. #define IOS ios::sync_with_stdio(false)
  40. #define IOSB cin.tie(0), cout.tie(0);
  41. const ll ok = ll(1e9 + 7);
  42.  
  43. int main()
  44. {
  45.     IOSB;
  46.     IOS;
  47. #ifdef TheCompiler
  48.     files;
  49. #endif
  50.     toch(0);
  51.     ll i, j, n;
  52.     vector<long double>f(2010);
  53.     cin >> i ;
  54.     i += 1000;
  55.     cin >> f[i];
  56.     cin >> j;
  57.     j += 1000;
  58.     cin >> f[j] >> n;
  59.     n += 1000;
  60.     if (i > j)
  61.     {
  62.         swap(i, j);
  63.     }
  64.     if (i == n)
  65.     {
  66.         cout << f[i];
  67.         return 0;
  68.     }
  69.     if (j == n)
  70.     {
  71.         cout << f[j];
  72.         return 0;
  73.     }
  74.     ll sc = 0;
  75.     if ((j - i - 1) % 2 == 0)
  76.     {
  77.         sc = i - 1;
  78.     }
  79.     else
  80.     {
  81.         sc = i+1;
  82.     }
  83.     vector<p(ll)>ck(2010);
  84.     ck[sc] = { 0,1 };
  85.     ck[i] = { 1,0 };
  86.     for (int k= max(sc, i)+1; k <= j; k++)
  87.     {
  88.         ck[k].first = ck[k - 1].first + ck[k - 2].first;
  89.         ck[k].second = ck[k - 1].second + ck[k - 2].second;
  90.     }
  91.     f[sc] = (f[j] - ck[j].first*f[i]) / ck[j].second;
  92.     if (n >= min(sc, i))
  93.     {
  94.         for (int k = max(sc, i) + 1; k <= n; k++)
  95.         {
  96.             f[k] = f[k - 1] + f[k - 2];
  97.         }
  98.         cout << f[n];
  99.     }
  100.     else
  101.     {
  102.         for (int k = min(sc, i) - 1; k >= n; k--)
  103.         {
  104.             f[k] = f[k - 2] - f[k - 1];
  105.         }
  106.         cout << f[n];
  107.     }
  108.     return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment