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 หารด้วย 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