Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนองค์ประกอบในอาร์เรย์ที่หาร k ลงตัวใน C++


เราได้รับอาร์เรย์ของจำนวนเต็มบวกและตัวแปรจำนวนเต็ม 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