เราได้รับอาร์เรย์ 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