ในบทช่วยสอนนี้ เราจะแก้ปัญหาด้านล่างนี้
จากอาร์เรย์ของจำนวนเต็ม เราต้องหาตัวเลข 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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น