VasilM

2a_fibonacci

Dec 8th, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. int a, b, cnt, x;
  7.  
  8. int fib( int n )
  9. {  if (n <= 2) return 1;
  10.    int fold = 1;
  11.    int fold2 = 1;
  12.    int fnew;
  13.    for (int i = 3; i <= n; i++)
  14.    {  fnew = ( a*fold ) + ( b*fold2 );
  15.       fold2 = fold;
  16.       fold = fnew;
  17.    }
  18.    return fnew;
  19. }
  20.  
  21. int ifX(){
  22.     for( int i=0; fib(i) < 1000001; i++ )
  23.         if( x == fib(i) ) return i;
  24.     return 0;
  25. }
  26.  
  27. int main (){
  28.  
  29.     while( cin >> a >> b >> cnt )
  30.         while( cnt-- ){
  31.             cin >> x;
  32.             cout << ifX() << endl;
  33.         }
  34.     return 1;
  35. }
  36. /*
  37. Задача 2а.Обобщена редица на Фибоначи дефинираме по следния начин:
  38.                       F(n) = aF(n-1) + bF(n-2)
  39. за n > 2 при зададени  
  40.                     F(1) = F(2) = 1.  
  41. Да се напише програма за проверка дали дадено число е елемент от такава редица и ако е елемент,
  42. да се намери индексът му в редицата.
  43.  
  44. Вход:
  45. От стандартния вход се четат последователно числата a, b <101, броят на числата за проверка, по-малък от 1000001,
  46. и самите числа - също по-малки от 1000001. Входът съдържа по-малко от 101 примери, всеки задаващ различна обобщена редица на Фибоначи.
  47.  
  48. Изход:
  49. За всяко проверено число на нов ред се извежда индексът му, ако числото е от съответната обобщена редица на Фибоначи или 0 - ако не е.
  50.  
  51. Пример:
  52. 1 1
  53. 4
  54. 13 14 9 5
  55. 1 2
  56. 1
  57. 341
  58.  
  59. Решение на примера:
  60. 7
  61. 0
  62. 0
  63. 5
  64. 10
  65. */
Advertisement
Add Comment
Please, Sign In to add comment