เราได้รับอาร์เรย์ของจำนวนเต็มบวกและตัวแปรจำนวนเต็ม k งานคือการคำนวณจำนวนองค์ประกอบในอาร์เรย์ที่หาร k ลงตัว
อินพุต − int arr[] = {4, 2, 6, 1, 3, 8, 10, 9}, k = 2
เอาต์พุต − นับจำนวนองค์ประกอบในอาร์เรย์ที่หาร 2 ลงตัวคือ − 5
คำอธิบาย − เราจะหารองค์ประกอบในอาร์เรย์ด้วยค่า k และตรวจสอบว่าเศษเป็น 0 หรือไม่ ดังนั้น 4 หาร 2 ลงตัว, 2 หาร 2 ลงตัว, 6 หาร 2 ลงตัว, 1 ไม่หาร 2 ลงตัว, 3 ไม่หาร 2 ลงตัว, 8 หาร 2 ลงตัว, 10 หาร 2 ลงตัว, 9 ไม่หาร 2 ลงตัว ดังนั้นมี 5 องค์ประกอบที่หาร k คือ 2 ลงตัว
อินพุต − int arr[] = {3, 2, 9, 15, 0, 8, 10}, k = 3
เอาต์พุต − นับจำนวนองค์ประกอบในอาร์เรย์ที่หาร 3 ลงตัวคือ − 3
คำอธิบาย − 3 หาร 3 ลงตัว, 2 ไม่หาร 3 ลงตัว, 9 หาร 3 ลงตัว, 15 หาร 3 ลงตัว, 0 ไม่หารด้วยตัวเลขใดๆ, 8 ไม่หาร 3 ลงตัว, 10 ไม่หาร 3 ลงตัว ดังนั้นมี 3 องค์ประกอบที่หาร 3 ลงตัว
วิธีการที่ใช้ในโปรแกรมด้านล่าง
สามารถมีหลายวิธีในการแก้ปัญหาเฉพาะเจาะจง ดังนั้นเราจะเริ่มด้วยวิธีที่เรียบง่าย
รับอาร์เรย์ขององค์ประกอบจำนวนเต็มและตัวแปรจำนวนเต็ม k
คำนวณความยาวของอาร์เรย์และส่งข้อมูลไปยังฟังก์ชันเพื่อประมวลผลต่อ
ใช้ตัวแปรชั่วคราว count เพื่อเก็บจำนวนองค์ประกอบที่หาร k ลงตัว
เริ่มลูป FOR จาก 0 ถึงความยาวของอาร์เรย์
ภายในลูป ตรวจสอบ IF arr[i] % k == 0 แล้วเพิ่ม count ขึ้น 1
คืนค่า count
พิมพ์ผลลัพธ์
วิธีที่มีประสิทธิภาพ
รับองค์ประกอบในเวกเตอร์ของจำนวนเต็มและตัวแปรจำนวนเต็ม k
ใช้ตัวแปรชั่วคราว count เพื่อเก็บจำนวนองค์ประกอบที่หาร k ลงตัว
ตั้งค่า count เป็นการเรียกฟังก์ชันในตัว 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