avr39-ripe

sortQsort

Apr 1st, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.36 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int rabbits(long int r, long int n, long int k) {
  6.     if (n == 0) return r;
  7.     if (r <= k) return rabbits(r * 2, n - 1, k);
  8.     return rabbits(2 * (r - k), n - 1, k);
  9. }
  10.  
  11. int main() {
  12.     long int n, k, r = 1;
  13.     cin >> n >> k;
  14.     cout << rabbits(r, n, k);
  15.     return 0;
  16. }
  17.  
  18.  
  19. Как-то наконец земляне нашли обитаемую планету, назвали ее ТТВ, и отправили вместе с кораблем туда одного кролика. Кролику понравился климат новой планеты и через месяц он произвел на свет еще одного кролика. Известно, что каждый месяц каждый кролик, присутствующий на планете, производил на свет еще одного кролика. На планете откуда-то взялся монстр, который в начале месяца съедал K кроликов, если только их становилось строго больше K. В задаче необходимо определить количество кроликов, которое будет на планете через N месяцев после прибытия туда космического корабля с первым кроликом.
  20.  
  21.  
  22. #include "pch.h"
  23. #include <iostream>
  24.  
  25. using namespace std;
  26.  
  27. template <typename T> void printArray(T arr[], uint16_t size)
  28. {
  29.     for (uint16_t i = 0; i < size; i++) { cout << arr[i] << " "; }; cout << endl;
  30. }
  31.  
  32. template <typename T> void qsort(T arr[], uint16_t head, uint16_t tail)
  33. {
  34.     uint16_t intH = head;
  35.     uint16_t intT = tail;
  36.     T mid = arr[(intH + intT) / 2];
  37.     do
  38.     {
  39.         while (arr[intH] < mid) intH++;
  40.         while (arr[intT] > mid) intT--;
  41.  
  42.         if (intH <= intT)
  43.         {
  44.             T tmp = arr[intH];
  45.             arr[intH] = arr[intT];
  46.             arr[intT] = tmp;
  47.             cout << "Mid: " << mid << " Head: " << head << " Tail: " << tail << " intH: " << intH << " intT: " << intT << " " << endl;
  48.             intH++;
  49.             intT--;
  50.             printArray(arr, 10);
  51.         }
  52.     } while (intH <= intT);
  53.     cout << endl;
  54.  
  55.     if (intT > head) qsort(arr, head, intT);
  56.     if (tail > intH) qsort(arr, intH, tail);
  57. }
  58.  
  59. int main()
  60. {
  61.     float arr[10] = { 1,4,3,7,8,11,3,9,0,-9 };
  62.     printArray(arr, 10);
  63.     qsort(arr, 0, 9);
  64.     printArray(arr, 10);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment