Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số phần tử trong một mảng chia hết cho k trong C ++

Chúng ta được cung cấp với một mảng các số nguyên dương và một biến số nguyên k. Nhiệm vụ là tính số phần tử trong một mảng chia hết cho giá trị k cho trước.

Đầu vào - int arr [] ={4, 2, 6, 1, 3, 8, 10, 9}, k =2

Đầu ra - Đếm số phần tử trong mảng chia hết cho 2 là - 5

Giải thích - chúng ta sẽ chia các phần tử trong một mảng cho một giá trị k và kiểm tra xem lời nhắc có phải là 0 hay không. Vậy 4 chia hết cho 2, 2 chia hết cho 2, 6 chia hết cho 2, 1 không chia hết cho 2, 3 không chia hết cho 2, 8 chia hết cho 2, 10 chia hết cho 2, 9 là 't chia hết cho 2. Vì vậy, có 5 phần tử trong một mảng hoàn toàn chia hết cho k tức là 2.

Đầu vào - int arr [] ={3, 2, 9, 15, 0, 8, 10}, k =3

Đầu ra - Đếm số phần tử trong mảng chia hết cho 3 là - 3

Giải thích - chúng ta sẽ chia các phần tử trong một mảng cho một giá trị k và kiểm tra xem lời nhắc có phải là 0 hay không. Vì vậy, 3 chia hết cho 3, 2 không chia hết cho 3, 9 chia hết cho 3, 15 chia hết cho 3, 0 không chia hết cho bất kỳ số nào, 8 không chia hết cho 3, 10 không chia hết bằng 3. Vì vậy, có 3 phần tử trong một mảng hoàn toàn chia hết cho k tức là 23

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Có thể có nhiều cách tiếp cận để giải quyết một vấn đề cụ thể. Vì vậy, trước tiên, chúng tôi sẽ đi với một cách tiếp cận ngây thơ.

  • Nhập một mảng các phần tử số nguyên và một biến số nguyên k

  • Tính độ dài của một mảng và chuyển dữ liệu vào hàm để xử lý thêm.

  • Lấy một số biến tạm thời để lưu trữ số lượng các phần tử chia hết cho k

  • Bắt đầu vòng lặp FOR từ 0 cho đến hết chiều dài của một mảng

  • Bên trong vòng lặp, hãy kiểm tra IF arr [i]% k =0, sau đó tăng số lượng lên 1

  • Trả lại số lượng

  • In kết quả.

Phương pháp tiếp cận hiệu quả

  • Nhập các phần tử vào một vectơ kiểu số nguyên và lấy một biến số nguyên k.

  • Lấy một số biến tạm thời để lưu trữ số lượng các phần tử chia hết cho k

  • Đặt số đếm làm lệnh gọi đến một hàm count_if () có sẵn sẽ lấy vector.begin (), vector.end () làm đối số và bắt đầu truyền tải sau đó trả về i% k nếu 0.

  • In kết quả.

Ví dụ (cách tiếp cận ngây thơ)

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count the number of elements in an array which are divisible by 2 are: 5

Ví dụ (Phương pháp Tiếp cận Hiệu quả)

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count the number of elements in an array which are divisible by 2 are: 5