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

สรุป

หากคุณมีคำถามในบทช่วยสอนนี้ ให้ระบุในส่วนความคิดเห็น