Рубрики

Программа на C / C ++ для n-го кратного числа в рядах Фибоначчи

Даны два целых числа n и k. Найдите положение n-го кратного K в ряду Фибоначчи.
Примеры:

Input : k = 2, n = 3
Output : 9
3'rd multiple of 2 in Fibonacci Series is 34 
which appears at position 9.

Input  : k = 4, n = 5 
Output : 30
5'th multiple of 5 in Fibonacci Series is 832040 
which appears at position 30.

Эффективное решение основано на следующем интересном свойстве.
Ряд Фибоначчи всегда периодичен при модульном представлении. Ниже приведены примеры.

F (mod 2) = 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0,
            1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0 
Here 0 is repeating at every 3rd index and 
the cycle repeats at every 3rd index. 

F (mod 3) = 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2
Here 0 is repeating at every 4th index and 
the cycle repeats at every 8th index.

F (mod 4) = 1, 1, 2, 3, 1, 0, 1, 1, 2, 3, 1, 0, 1, 1, 2, 3,
           1, 0, 1, 1, 2, 3, 1, 0, 1, 1, 2, 3, 1, 0 
Here 0 is repeating at every 6th index and 
the cycle repeats at every 6th index.

F (mod 5) = 1, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0,
            2, 2, 4, 1, 0, 1, 1, 2, 3, 0, 3, 3, 1, 4, 0
Here 0 is repeating at every 5th index and
the cycle repeats at every 20th index.

F (mod 6) = 1, 1, 2, 3, 5, 2, 1, 3, 4, 1, 5, 0, 5, 5, 4,
            3, 1, 4, 5, 3, 2, 5, 1, 0, 1, 1, 2, 3, 5, 2
Here 0 is repeating at every 12th index and 
the cycle repeats at every 24th index.

F (mod 7) = 1, 1, 2, 3, 5, 1, 6, 0, 6, 6, 5, 4, 2, 6, 1,
            0, 1, 1, 2, 3, 5, 1, 6, 0, 6, 6, 5, 4, 2, 6 
Here 0 is repeating at every 8th index and 
the cycle repeats at every 16th index.

F (mod 8) = 1, 1, 2, 3, 5, 0, 5, 5, 2, 7, 1, 0, 1, 1, 2,
            3, 5, 0, 5, 5, 2, 7, 1, 0, 1, 1, 2, 3, 5, 0 
Here 0 is repeating at every 6th index and 
the cycle repeats at every 12th index.

F (mod 9) = 1, 1, 2, 3, 5, 8, 4, 3, 7, 1, 8, 0, 8, 8, 7,
            6, 4, 1, 5, 6, 2, 8, 1, 0, 1, 1, 2, 3, 5, 8 
Here 0 is repeating at every 12th index and 
the cycle repeats at every 24th index.

F (mod 10) = 1, 1, 2, 3, 5, 8, 3, 1, 4, 5, 9, 4, 3, 7, 0,
             7, 7, 4, 1, 5, 6, 1, 7, 8, 5, 3, 8, 1, 9, 0.
Here 0 is repeating at every 15th index and
the cycle repeats at every 60th index.

// C ++ программа для поиска позиции n-го кратного
// ряда k в серии Фибоначчи
#include <bits/stdc++.h>

using namespace std;

const int MAX = 1000;

  
// Возвращает позицию n-го множества k в
// Серия Фибоначчи

int findPosition(int k, int n)

{

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

    unsigned long long int f1 = 0, f2 = 1, f3;

    for (int i = 2; i <= MAX; i++) {

        f3 = f1 + f2;

        f1 = f2;

        f2 = f3;

  

        // Нашел первое кратное k в позиции i

        if (f2 % k == 0)

  

            // n-й кратный будет в позиции n * i

            // используя Периодическое свойство Фибоначчи

            // числа по модулю.

            return n * i;

    }

}

  
// Код драйвера

int main()

{

    int n = 5, k = 4;

    cout << "Position of n'th multiple of k"

         << " in Fibonacci Series is "

         << findPosition(k, n) << endl;

    return 0;

}

Выход:

Position of n'th multiple of k in Fibonacci Series is 30

Пожалуйста, обратитесь к полной статье о n-м кратном числе в серии Фибоначчи для более подробной информации!

Рекомендуемые посты:

Программа на C / C ++ для n-го кратного числа в рядах Фибоначчи

0.00 (0%) 0 votes