Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kira bilangan elemen dalam tatasusunan Bilangan 1 dalam perwakilan binarinya ialah gandaan K

Kira bilangan elemen dalam tatasusunan Bilangan 1 dalam perwakilan binarinya ialah gandaan K

WBOY
WBOYke hadapan
2023-09-19 22:09:08726semak imbas

Bit set ialah perwakilan binari 0 dan 1. Nombor 1 ini dipanggil bit tetapan dalam komputer. Mari kita ambil contoh untuk memahami pengiraan set bit -

Mari kita ambil contoh untuk memahami pengiraan setbit -

Bit set integer 96 dikira sebagai

Kira bilangan elemen dalam tatasusunan Bilangan 1 dalam perwakilan binarinya ialah gandaan K

Katakan kita mahu menetapkan bit kepada jumlah 96. Jadi mengikut perwakilan di atas, kami akan menetapkan bit 1 kepada elemen tatasusunan tersebut dan jumlahnya ialah 96. Dengan cara ini kita akan membentuk 2 kumpulan bit. Jadi jika kita menetapkan nilai K kepada 2, set bit 96 adalah gandaan daripadanya.

Dalam program ini, kami akan menyelesaikan masalah pengiraan elemen tatasusunan di mana bilangan bit set ialah gandaan K.

Algoritma

  • Kami akan menggunakan fail pengepala bernama ‘bits/stdc++.h’ untuk memulakan program, yang mengandungi semua perpustakaan templat standard C++.

  • Kami sedang mencipta definisi fungsi yang dipanggil ‘find_bitcount’, yang menerima tiga parameter, arr, n dan k, dan ditakrifkan seperti berikut −

    arr[] − Dapatkan input tatasusunan daripada fungsi utama tatasusunan.

    n − panjang tatasusunan

    k - Menyemak pembahagian kiraan bit yang ditetapkan.

    Ini akan mengira jumlah bilangan bit set dalam elemen tatasusunan.

  • Kami kemudian menyimpan ‘0’ ke dalam pembolehubah ‘ans’, yang akan menjejaki kiraan nombor yang memenuhi syarat.

  • Kami memulakan gelung for untuk mengulang setiap elemen dan menyimpan elemen tatasusunan iaitu 'arr[i]' ke dalam pembolehubah 'x' yang memenuhi syarat dalam gelung sementara berikut untuk menyemak jumlah tetapan bit Mengira syarat . Dengan cara ini fungsi memulakan ‘x’ kepada nilai elemen tatasusunan.

  • Kemudian pembolehubah ‘setBitsCount’ dimulakan kepada ‘0’, yang akan menjejaki bilangan set bit elemen tatasusunan semasa.

  • Seterusnya, kami membuat gelung sementara untuk menyemak sama ada x (elemen tatasusunan yang disimpan dalam x) lebih besar daripada 0 dan lakukan perkara berikut:

    • setBitsCount += x & 1 − Gunakan operator bitwise AND dalam gelung dan 1 untuk menentukan sama ada bit x yang paling ketara ialah 1.

    • x = x >> 1 − Jika hasilnya ialah 1, tambahkan bilangan digit yang ditetapkan sebanyak 1. Kemudian gunakan operator >> dalam gelung untuk mengalihkan x 1 bit ke kanan untuk menghapuskan bit yang paling tidak ketara.

  • Sekarang gunakan penyataan if untuk menyemak sama ada 'setBitsCount' boleh dibahagikan dengan 'k', gunakan operator '%', dan bersamaan dengan '0', kemudian elemen tatasusunan semasa memenuhi syarat dan menambah pembolehubah 'ans' oleh '1'.

  • Selepas memproses semua syarat di atas, fungsi mengembalikan nilai ‘ans’, yang mentakrifkan jumlah set set digit elemen tatasusunan.

  • Teruskan dan mulakan fungsi utama dan isytiharkan semua elemen tatasusunan. Kami kemudiannya memulakan pembolehubah ‘n’ untuk mencari saiz tatasusunan, dan memulakan pembolehubah ‘K’ kepada ‘2’, yang akan menyemak sama ada elemen tatasusunan ialah gandaan K.

  • Akhir sekali, dalam kenyataan cetakan, kami memanggil definisi fungsi bernama ‘find_bitcount()’ dan dapatkan hasilnya.

Contoh

Dalam program ini, kami akan melaksanakan pengiraan elemen tatasusunan yang bit setnya ialah gandaan K.

#include <bits/stdc++.h>
#include <bits/stdc++.h>
using namespace std;

// Function to find the count of numbers
int find_bitcount(int arr[], int n, int k) {
   int ans = 0;
   for (int i = 0; i < n; i++) {
      int x = arr[i];
      int setBitsCount = 0;

      // Calculate the set-bits count of the element x
      while (x > 0) {
         setBitsCount += x & 1;
         x = x >> 1;
      }

      // Check if the setbits count
      // is divisible by K
      if (setBitsCount % k == 0)
      ans++;
   }
   return ans;
}
int main() {
   int arr[] = { 6, 845, 4, 168, 7896 };
   int n = sizeof(arr) / sizeof(arr[0]);
   int K = 2;
   cout << "There are "<<find_bitcount(arr, n, K)<<" array element whose setbits are in a multiple of K";
   return 0;
}

Output

There are 3 array element whose setbits are in a multiple of K

Kesimpulan

Kami meneroka konsep kiraan elemen tatasusunan, dengan bilangan digit ialah gandaan K. Dalam atur cara ini, fungsi ditakrifkan untuk mengira jumlah kiraan elemen bagi bilangan set elemen tatasusunan. Kami kemudian memerhatikan bagaimana bilangan bit yang ditetapkan dialihkan melalui operator >> dan menggunakan pernyataan bersyarat untuk menyemak bilangan elemen tatasusunan yang dihantar ke bilangan bit yang ditetapkan. Akhirnya, kami hanya mencetak hasilnya.

Atas ialah kandungan terperinci Kira bilangan elemen dalam tatasusunan Bilangan 1 dalam perwakilan binarinya ialah gandaan K. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam