Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. void Uredi(int &a, int &b)
  7. {
  8. a = a + b;
  9. b = -b;
  10. b = a + b;
  11. a = a - b;
  12. }
  13.  
  14. int main()
  15. {
  16. int N, M;
  17. cin >> N >> M;
  18.  
  19. int a, brojac, brj;
  20. double koren1, koren2;
  21.  
  22. int fib[10005], indeksi[10005];
  23. bool jesu[10005];
  24.  
  25. brojac = 0;
  26.  
  27. for (int i = 0; i<M + 1; i++)
  28. jesu[i] = false;
  29.  
  30. brj = 0;
  31. //izdvajanje Fibonacijevih brojeva i njihovih indeksa
  32. for (int i = 0; i<N; i++)
  33. {
  34. cin >> a;
  35.  
  36. koren1 = sqrt(5 * a*a + 4);
  37. koren2 = sqrt(5 * a*a - 4);
  38. if ((floor (koren1) == koren1) || (floor(koren2) == koren2))
  39. {
  40. if (a == 1 && brj != 2)
  41. {
  42. fib[brojac] = a;
  43. indeksi[brojac] = i;
  44. brj++;
  45. brojac++;
  46. }
  47.  
  48. if (!(jesu[a]) && a!=1)
  49. {
  50. fib[brojac] = a;
  51. indeksi[brojac] = i;
  52. jesu[a] = true;
  53. brojac++;
  54. }
  55. }
  56. }
  57.  
  58. //fib - fibonacijevi brojevi, indeksi - njihovi indeksi
  59. //brojac - duzina od fib
  60.  
  61. //sortiranje niza fib
  62.  
  63. bool moze = true;
  64. int k = 0;
  65.  
  66. while (moze)
  67. {
  68. moze = false;
  69. for (int i = brojac - 1; i > k; i--)
  70. {
  71. if (fib[i] < fib[i - 1])
  72. {
  73. Uredi(fib[i], fib[i - 1]);
  74. Uredi(indeksi[i], indeksi[i - 1]);
  75. moze = true;
  76. }
  77. }
  78. k++;
  79. }
  80.  
  81. //provera koji je segmenat najduzi fibonacijev podniz
  82.  
  83. int trenutna = 0;
  84. int poctrenutna = 0;
  85. int pocmax = 0;
  86. int max = 0;
  87.  
  88. for (int i = 0; i < brojac-2; i++)
  89. {
  90. if (fib[i] + fib[i + 1] == fib[i + 2])
  91. {
  92. trenutna++;
  93. if (trenutna > max)
  94. {
  95. max = trenutna;
  96. pocmax = poctrenutna;
  97. }
  98. }
  99. else
  100. {
  101. trenutna = 0;
  102. poctrenutna = i + 2;
  103. i++;
  104. }
  105. }
  106.  
  107.  
  108. for (int i = pocmax; i < pocmax + max + 2; i++)
  109. cout << indeksi[i] << endl;
  110.  
  111.  
  112.  
  113. return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement