เราได้รับอาร์เรย์ arr[] ขององค์ประกอบ N เป้าหมายคือการหาจำนวนคู่ของดัชนีที่ถูกต้องทั้งหมด (i,j) โดยที่ arr[i] หารด้วย arr[j] หรือ arr[j] ลงตัวด้วย arr[i] และ i!=j
เราจะทำสิ่งนี้โดยสำรวจอาร์เรย์ arr[] โดยใช้ two for loops สำหรับแต่ละจำนวนคู่และตรวจสอบว่า arr[i]%arr[j]==0 หรือ arr[j]%arr[i]==0 เมื่อฉัน !=จ. หากเพิ่มจำนวนคู่จริง
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล − Arr[]={ 2,4,3,6 } N=4
ผลผลิต − จำนวนคู่ที่ถูกต้อง − 3
คำอธิบาย − คู่ที่ถูกต้องคือ −
Arr[0] & Arr[1] → (2,4) here 4%2==0 0!=1 Arr[0] & Arr[1] → (2,6) here 6%2==0 0!=3 Arr[2] & Arr[3] → (3,6) here 6%3==0 2!=3
ป้อนข้อมูล − Arr[]={ 2,5,7,9,11 } N=5
ผลผลิต − จำนวนคู่ที่ถูกต้อง − 0
คำอธิบาย - ไม่มีเลขใดมาหารกันทั้งหมด ไม่สามารถสร้างคู่ได้
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้อาร์เรย์จำนวนเต็ม Arr[] ที่เริ่มต้นด้วยตัวเลขสุ่ม
-
ใช้ตัวแปร n ซึ่งเก็บความยาวของ Arr[].
-
ฟังก์ชัน countPairs(int arr[], int n) รับอาร์เรย์ ความยาวเป็นอินพุตและส่งกลับคู่ที่ถูกต้องและตรงตามเงื่อนไขที่ต้องการ
-
Traverse array ใช้ two for loops สำหรับแต่ละองค์ประกอบของคู่
-
วงนอกจาก 0<=i
-
ตรวจสอบว่า arr[i]%arr[j]==0 หรือ arr[j]%arr[i]==0 การเพิ่มขึ้นจะนับหนึ่งครั้งหากเงื่อนไขข้อใดข้อหนึ่งเป็นจริง
-
เมื่อสิ้นสุดการวนซ้ำทั้งหมดจะมีจำนวนคู่ที่ถูกต้องทั้งหมด
-
คืนค่าการนับเป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n){
// Count of pairs
int count = 0;
for (int i = 0; i < n-1; i++){
for (int j = i + 1; j < n; j++){
if(arr[i]%arr[j]==0 || arr[j]%arr[i]==0)
{ count++; }
}
}
return count;
}
int main(){
int Arr[] = { 2,3,4,5,6 };
int len = sizeof(Arr) / sizeof(Arr[0]);
cout << "Count of number of pairs : "<< countPairs(Arr, len);
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of number of pairs : 3