C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++のビットセットを使用して、数値の2進表現で後続ゼロの数をカウントします。


入力として整数numを指定します。目標は、ビットセットを使用して、numのバイナリ表現で後続ゼロの数を見つけることです。

ビットセットは、ビット0と1を格納します。これはビットの配列です。

入力

num = 10

出力

Count of number of trailing zeros in Binary representation of a number using
Bitset are: 1

説明

The number 10 in binary is represented as 1010 so trailing zeroes in it is
1.

入力

num = 64

出力

Count of number of trailing zeros in Binary representation of a number using Bitset are: 6

説明

The number 64 in binary is represented as 10000000 so trailing zeroes in it is 6.

以下のプログラムで使用されるアプローチは次のとおりです

このアプローチでは、ビットセットを使用しています。 |を使用してビットセットをnumで設定します。次に、forループを使用してビットセットをトラバースします。最初の1が検出されるとすぐにループを中断し、それ以外の場合は後続ゼロのカウントをインクリメントします。

  • 入力として整数numを取ります。

  • 関数trailing_zeroes(int num)は、numを取り、ビットセットを使用した数値の2進表現で後続ゼロの数のカウントを返します。

  • 初期カウントを0とします。

  • ビットセットを取ります。

  • numをarr|=numとして設定します。

  • i=0からi<64までのforループを使用してarrをトラバースします。 arr [i]が0の場合、カウントをインクリメントします。それ以外の場合は、ループを中断します。

  • ループの終了時に結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int trailing_zeroes(int num){
   int count = 0;
   bitset<64> arr;
   arr |= num;
   for (int i = 0; i < 64; i++){
      if (arr[i] == 0){
         count++;
      } else {
         break;
      }
   }
   return count;
}
int main(){
   int num = 6;
   cout<<"Count of number of trailing zeros in Binary representation of a number using Bitset are: "<<trailing_zeroes(num);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of number of trailing zeros in Binary representation of a number using Bitset are: 1

  1. Nの基数16表現で後続ゼロの数を見つけます! C++を使用する

    この記事では、たとえば階乗の基数16の表現で特定の数Nの後続ゼロを見つける問題を理解します Input : N = 7 Output : 1 Explanation : fact(7) = 5040 in base10 and 13B0 in base16 having 1 trailing zero. Input : N = 11 Output : 2 Explanation : fact(11) = 39916800 in base10 and 2611500 in base16 having 2 trailing zeroes. まず、10進数を1つの基数から別の基数に変換するプロセ

  2. C ++を使用してOpenCVの面の数を数える方法は?

    画像内にある顔の数を数えるのは簡単です。前のセクションで作成したプログラムには、「faces.size()」の面の数に関する情報がすでに含まれています。このコード-faces.size()は整数値を与えます。 たとえば、「int x =faces.size()」と書くと、「x」には面の数が含まれます。 次のプログラムは、特定の画像から顔の数を計算し、コンソールウィンドウに表示します。 例 #include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/objdetect/obj