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

ค้นหา GCD ของแฟคทอเรียลขององค์ประกอบของอาร์เรย์ที่กำหนดใน C++


สมมติว่าเรามีอาร์เรย์ A โดยมีองค์ประกอบ N เราต้องหา GCD ของแฟกทอเรียลของอิลิเมนต์ทั้งหมดของอาร์เรย์ สมมติว่าองค์ประกอบคือ {3, 4, 8, 6} จากนั้น GCD ของแฟกทอเรียลคือ 6 ที่นี่เราจะเห็นเคล็ดลับ เนื่องจาก GCD ของตัวเลขสองตัวนั้นเป็นจำนวนที่มากที่สุด ซึ่งหารตัวเลขทั้งสอง จากนั้น GCD ของแฟกทอเรียลของตัวเลขสองตัวจึงเป็นค่าของแฟกทอเรียลของจำนวนที่น้อยที่สุดนั้นเอง ดังนั้น gcd ของ 3! และ 5! คือ 3! =6.

ตัวอย่าง

#include <iostream>
using namespace std;
long fact(int n){
   if(n <= 1)
      return 1;
   return n * fact(n-1);
}
int gcd(int arr[], int n) {
   int min = arr[0];
   for (int i = 1; i < n; i++) {
      if(min > arr[i])
         min = arr[i];
   }
   return fact(min);
}
int main() {
   int arr[] = {3, 4, 8, 6};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "GCD: "<< gcd(arr, n);
}

ผลลัพธ์

GCD: 6