Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หา GCD ของ N Fibonacci Numbers ด้วย Indices ที่กำหนดใน C++

ในที่นี้เราต้องการหา GCD ของ n Fibonacci Terms ด้วย Indices ที่กำหนด หา Maximum Index ก่อน แล้ว Generate Fibonacci Terms: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34... Index เริ่มจาก 0 ถ้าต้องการ GCD ของ Indices {2, 3, 4, 5} Terms คือ {1, 2, 3, 4} GCD = 1

ใช้ Property สนุก: GCD(Fibo(i), Fibo(j)) = Fibo(GCD(i, j))

ตัวอย่างโค้ด C++

#include <iostream>
#include <algorithm>
using namespace std;

int getFiboTerm(int n) {
    int fibo[n + 2];
    fibo[0] = 0; fibo[1] = 1;
    for(int i = 2; i<= n; i++) {
        fibo[i] = fibo[i - 1] + fibo[i - 2];
    }
    return fibo[n];
}

int getNFiboGCD(int arr[], int n) {
    int gcd = 0;
    for(int i = 0; i < n; i++) {
        gcd = __gcd(gcd, arr[i]);
    }
    return getFiboTerm(gcd);
}

int main() {
    int indices[] = {3, 6, 9};
    int n = sizeof(indices)/sizeof(indices[0]);
    cout << "GCD of fibo terms using indices: " << getNFiboGCD(indices, n);
}

ผลลัพธ์

GCD of fibo terms using indices: 2