Heim  >  Artikel  >  Backend-Entwicklung  >  Zählen Sie die Anzahl der Elemente im Array. Die Anzahl der Einsen in seiner binären Darstellung ist ein Vielfaches von K

Zählen Sie die Anzahl der Elemente im Array. Die Anzahl der Einsen in seiner binären Darstellung ist ein Vielfaches von K

WBOY
WBOYnach vorne
2023-09-19 22:09:08681Durchsuche

Die gesetzten Bits sind die binäre Darstellung von 0 und 1. Diese Nummer 1 wird in einem Computer als Setzbit bezeichnet. Nehmen wir ein Beispiel, um die Berechnung gesetzter Bits zu verstehen -

Nehmen wir ein Beispiel, um die Setbit-Berechnung zu verstehen -

Das gesetzte Bit der Ganzzahl 96 wird berechnet als

Zählen Sie die Anzahl der Elemente im Array. Die Anzahl der Einsen in seiner binären Darstellung ist ein Vielfaches von K

Angenommen, wir möchten die Bits auf die Summe 96 setzen. Gemäß der obigen Darstellung setzen wir also Bit 1 auf diese Array-Elemente und ihre Summe beträgt 96. Auf diese Weise bilden wir zwei Gruppen von Bits. Wenn wir also den K-Wert auf 2 setzen, sind die Einstellungsbits von 96 ein Vielfaches davon.

In diesem Programm lösen wir das Problem der Array-Elementzählung, bei dem die Anzahl der gesetzten Bits ein Vielfaches von K ist.

Algorithmus

  • Wir werden eine Header-Datei mit dem Namen ‘bits/stdc++.h‘ verwenden, um das Programm zu starten, das alle Standardvorlagenbibliotheken von C++ enthält.

  • Wir erstellen eine Funktionsdefinition namens ‘find_bitcount‘, die drei Parameter akzeptiert, arr, n und k, und wie folgt definiert ist: −

    arr[] − Holen Sie sich die Array-Eingabe von der Hauptfunktion des Arrays.

    n − Länge des Arrays

    k – Überprüft die Teilbarkeit der Bitanzahl mit der Einstellung.

    Dadurch wird die Gesamtzahl der gesetzten Bits in den Array-Elementen gezählt.

  • Wir speichern dann ‘0‘ in der Variablen ‘ans‘, die die Anzahl der Zahlen verfolgt, die die Bedingung erfüllen.

  • Wir starten die for-Schleife, um jedes Element zu iterieren und das Array-Element, d. h. 'arr[i]', in der Variablen 'x' zu speichern, die die Bedingung in der folgenden while-Schleife erfüllt, um die Zählbedingungen für die gesamten Biteinstellungen zu überprüfen . Auf diese Weise initialisiert die Funktion ‘x’ auf den Wert des Array-Elements.

  • Dann wird die Variable ‘setBitsCount‘ auf ‘0‘ initialisiert, wodurch die gesetzten Bits des aktuellen Array-Elements verfolgt werden.

  • Als nächstes erstellen wir eine While-Schleife, um zu prüfen, ob x (das in x gespeicherte Array-Element) größer als 0 ist, und führen Folgendes aus:

    • setBitsCount += x & 1 − Verwenden Sie den bitweisen AND-Operator in einer Schleife und 1, um zu bestimmen, ob das niedrigstwertige Bit von x 1 ist.

    • x = x >> 1 − Wenn das Ergebnis 1 ist, erhöhen Sie die eingestellte Anzahl der Ziffern um 1. Verwenden Sie dann den Operator >> in der Schleife, um x 1 Bit nach rechts zu verschieben, um das niedrigstwertige Bit zu eliminieren.

  • Nun verwenden Sie die if-Anweisung, um zu prüfen, ob „setBitsCount“ durch „k“ teilbar ist, verwenden Sie den Operator „%“ und ist gleich „0“, dann erfüllt das aktuelle Array-Element die Bedingung und erhöht die Variable „ans“. um '1'.

  • Nach der Verarbeitung aller oben genannten Bedingungen gibt die Funktion den Wert von ‘ans‘ zurück, der die Gesamtzahl der Ziffern der Array-Elemente definiert.

  • Starten Sie die Hauptfunktion und deklarieren Sie alle Array-Elemente. Anschließend initialisieren wir die Variable ‘n‘, um die Größe des Arrays zu ermitteln, und initialisieren die Variable ‘K‘ auf ‘2‘, wodurch überprüft wird, ob das Array-Element ein Vielfaches von K ist.

  • Schließlich rufen wir in der print-Anweisung die Funktionsdefinition mit dem Namen ‘find_bitcount()‘ auf und erhalten das Ergebnis.

Beispiel

In diesem Programm implementieren wir das Zählen eines Array-Elements, dessen gesetztes Bit ein Vielfaches von K ist.

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

Ausgabe

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

Fazit

Wir haben das Konzept einer Array-Elementanzahl untersucht, bei der die Anzahl der Ziffern ein Vielfaches von K ist. In diesem Programm wird eine Funktion definiert, um die Gesamtzahl der Elemente eines Arrays mit einer festgelegten Anzahl von Bits zu berechnen. Anschließend beobachten wir, wie die festgelegte Anzahl von Bits durch den >>-Operator verschoben wird, und verwenden eine bedingte Anweisung, um zu überprüfen, wie viele Array-Elemente an die festgelegte Anzahl von Bits übergeben wurden. Zum Schluss drucken wir einfach die Ergebnisse aus.

Das obige ist der detaillierte Inhalt vonZählen Sie die Anzahl der Elemente im Array. Die Anzahl der Einsen in seiner binären Darstellung ist ein Vielfaches von K. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:SQL mit C/C++ und SQLiteNächster Artikel:SQL mit C/C++ und SQLite