เราได้รับอาร์เรย์ของจำนวนเต็มบวกและตัวแปรจำนวนเต็ม k ภารกิจคือการคำนวณจำนวนองค์ประกอบในอาร์เรย์ที่หารด้วยค่าที่กำหนด k
ป้อนข้อมูล − int arr[] ={4, 2, 6, 1, 3, 8, 10, 9}, k =2
ผลผลิต − นับจำนวนองค์ประกอบในอาร์เรย์ที่หารด้วย 2 ลงตัวคือ − 5
คำอธิบาย − เราจะแบ่งองค์ประกอบในอาร์เรย์ด้วยค่า k และตรวจสอบว่าตัวเตือนเป็น 0 หรือไม่ ดังนั้น 4 หารด้วย 2 ลงตัว 2 2 หารด้วย 2 ลงตัว 6 หารด้วย 2 ลงตัว 1 หารด้วย 2 ไม่ลงตัว 3 หารด้วย 2 ไม่ลงตัว 8 หารด้วย 2 ลงตัว 10 หารด้วย 2 ลงตัว 9 ลงตัว หารด้วย 2 ไม่ลงตัว ดังนั้นจึงมี 5 องค์ประกอบในอาร์เรย์ที่หารด้วย ki.e. 2 ลงตัวสมบูรณ์
ป้อนข้อมูล − int arr[] ={3, 2, 9, 15, 0, 8, 10}, k =3
ผลผลิต − นับจำนวนองค์ประกอบในอาร์เรย์ที่หารด้วย 3 ลงตัวคือ − 3
คำอธิบาย − เราจะแบ่งองค์ประกอบในอาร์เรย์ด้วยค่า k และตรวจสอบว่าตัวเตือนเป็น 0 หรือไม่ ดังนั้น 3 หารด้วย 3 ลงตัว, 2 หารด้วย 3 ไม่ลงตัว, 9 หารด้วย 3 ลงตัว, 15 หารด้วย 3 ลงตัว, 0 หารด้วยจำนวนใดๆ ไม่ลงตัว, 8 หารด้วย 3 ไม่ลงตัว, 10 หารไม่ได้ ด้วย 3 ดังนั้น มี 3 องค์ประกอบในอาร์เรย์ที่หารด้วย k คือ 23
ลงตัวแนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
อาจมีหลายวิธีในการแก้ปัญหาเฉพาะ ก่อนอื่นเราจะใช้วิธีการแบบไร้เดียงสา
-
ป้อนอาร์เรย์ขององค์ประกอบจำนวนเต็มและตัวแปรจำนวนเต็ม k
-
คำนวณความยาวของอาร์เรย์และส่งข้อมูลไปยังฟังก์ชันเพื่อการประมวลผลต่อไป
-
ใช้การนับตัวแปรชั่วคราวเพื่อเก็บจำนวนองค์ประกอบที่หารด้วย k
-
เริ่มการวนซ้ำ FOR จาก 0 จนถึงความยาวของอาร์เรย์
-
ภายในลูป ให้ตรวจสอบ IF arr[i] % k =0 แล้วเพิ่มจำนวนขึ้น 1
-
คืนจำนวน
-
พิมพ์ผลลัพธ์
แนวทางที่มีประสิทธิภาพ
-
ป้อนองค์ประกอบในเวกเตอร์ของประเภทจำนวนเต็มและใช้ตัวแปรจำนวนเต็ม k
-
ใช้การนับตัวแปรชั่วคราวเพื่อเก็บจำนวนองค์ประกอบที่หารด้วย k
-
ตั้งค่าการนับเป็นการเรียกไปยังฟังก์ชัน inbuilt count_if() ที่จะรับ vector.begin(), vector.end() เป็นอาร์กิวเมนต์และเริ่มการข้ามผ่าน จากนั้นคืนค่า i%k ถ้า 0
-
พิมพ์ผลลัพธ์
ตัวอย่าง (แนวทางไร้เดียงสา)
#include <bits/stdc++.h> using namespace std; int divisible_k(int arr[], int size, int k){ int count = 0; for(int i = 0; i<size; i++){ if(arr[i]%k==0){ count++; } } return count; } int main(){ int arr[] = {4, 2, 6, 1, 3, 8, 10, 9}; int k = 2; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count the number of elements in an array which are divisible by "<<k<<" are: "<<divisible_k(arr, size, k); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count the number of elements in an array which are divisible by 2 are: 5
ตัวอย่าง (แนวทางที่มีประสิทธิภาพ)
#include <bits/stdc++.h> using namespace std; int main(){ vector<int> vec = {4, 2, 6, 1, 3, 8, 10, 9}; int count = count_if(vec.begin(), vec.end(), [](int i, int k = 2) { return i % k == 0; }); cout<<"Count the number of elements in an array which are divisible by k are: "<<count; return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count the number of elements in an array which are divisible by 2 are: 5