เราได้รับอาร์เรย์ของขนาดใดๆ ที่มีองค์ประกอบจำนวนเต็ม และภารกิจคือการคำนวณจำนวนคู่ในอาร์เรย์เพื่อให้องค์ประกอบหนึ่งของคู่แบ่งองค์ประกอบอื่นของคู่
อาร์เรย์ประเภทโครงสร้างข้อมูลที่สามารถจัดเก็บคอลเล็กชันแบบต่อเนื่องที่มีขนาดคงที่ขององค์ประกอบประเภทเดียวกัน อาร์เรย์ใช้เพื่อจัดเก็บชุดข้อมูล แต่มักจะมีประโยชน์มากกว่าที่จะคิดว่าอาร์เรย์เป็นชุดของตัวแปรประเภทเดียวกัน
ตัวอย่าง
Input − int arr[] = {1, 2, 3, 6} Output − count is 4
คำอธิบาย − (1,2), (1,3), (1,6) และ (3,6) เป็นคู่ที่องค์ประกอบหนึ่งของคู่หารอีกคู่เป็น 1 สามารถหารจำนวนใด ๆ และ 3 หาร 6 ด้วย ดังนั้น นับเป็น 4
Input − int arr[] = {2, 5, 10} Output − count is 2
คำอธิบาย − (2, 10) และ (5,10) คือคู่ที่องค์ประกอบหนึ่งของคู่หารอีกคู่หนึ่ง เนื่องจาก 2 สามารถหาร 10 และ 5 สามารถหาร 10 ได้เช่นกัน ดังนั้นการนับคือ 2
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
สร้างอาร์เรย์ สมมุติว่า arr[]
-
คำนวณความยาวของอาร์เรย์โดยใช้ฟังก์ชัน length() ที่จะคืนค่าจำนวนเต็มตามองค์ประกอบในอาร์เรย์
-
ใช้ตัวแปรชั่วคราวที่จะเก็บจำนวนองค์ประกอบที่มีอยู่ในอาร์เรย์เท่านั้น
-
เริ่มวนรอบด้วย i ถึง 0 และฉันน้อยกว่าขนาดของอาร์เรย์
-
ภายในลูปเริ่มลูปใหม่ด้วย j ถึง i+1 จนถึง j น้อยกว่าขนาด
-
ภายในลูปตรวจสอบว่า arr[i] % arr[j] =0 หรือ arr[j] % arr[i] =0 แล้วเพิ่มการนับ
-
คืนจำนวน
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <iostream> using namespace std; int divisibles(int a[], int size){ int result = 0; // Iterating through all pairs for (int i=0; i<size; i++){ for (int j=i+1; j<size; j++){ if (a[i] % a[j] == 0 || a[j] % a[i] == 0){ result++; } } } return result; } int main(){ int a[] = {1, 4, 7, 8, 9}; int size = sizeof(a) / sizeof(a[0]); cout <<"count is " <<divisibles(a, size); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -
count is 5