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

ค้นหา A และ B จากรายการตัวหารใน C++


ในบทช่วยสอนนี้ เราจะแก้ปัญหาด้านล่างนี้

จากอาร์เรย์ของจำนวนเต็ม เราต้องหาตัวเลข A และ B สองตัว ตัวเลขที่เหลือทั้งหมดในอาร์เรย์เป็นตัวหารของ A และ B

หากตัวเลขเป็นตัวหารของทั้ง A และ B ตัวเลขนั้นจะแสดงสองครั้งในอาร์เรย์

มาดูขั้นตอนการแก้ปัญหากัน

  • จำนวนสูงสุดในอาร์เรย์คือหนึ่งในตัวเลขจาก A และ B สมมติว่าเป็น A

  • ตอนนี้ B จะเป็นจำนวนที่ใหญ่เป็นอันดับสองหรือจำนวนที่ไม่ใช่ตัวหารของ A.

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
void findTheDivisors(int arr[], int n) {
   sort(arr, arr + n);
   int A = arr[n - 1], B = -1;
   for (int i = n - 2; i > -1; i--) {
      if (A % arr[i] != 0) {
         B = arr[i];
         break;
      }
      if (i - 1 >= 0 && arr[i] == arr[i - 1]) {
         B = arr[i];
         break;
      }
   }
   cout << "A = " << A << ", B = " << B << endl;
}
int main() {
   int arr[] = { 3, 2, 3, 4, 12, 6, 1, 1, 2, 6 };
   findTheDivisors(arr, 10);
   return 0;
}

ผลลัพธ์

หากคุณรันโปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้

A = 12, B = 6

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น