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

Pythonで0からnの範囲のすべての数値のセットビットの総数をカウントするプログラム


数値がnumであるとします。 0≤i≤numの範囲の各数値iについて、対応する2進数の1の数を計算し、それらをリストとして返す必要があります。したがって、数値が5の場合、数値は[0、1、2、3、4、5]であり、これらの数値の1の数は[0、1、1、2、1、2]であるため、次のようになります。 7を返します。

これを解決するには、次の手順に従います-

  • res:=num+1個の0を保持する配列

  • オフセット:=0

  • for i in range 1 to num + 1

    • iおよびi− 1 =0の場合、res [i]:=1およびoffset:=0

    • それ以外の場合は、オフセットを1増やし、res [i]:=1 + res [offset]

  • resの要素の合計を返す

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def countBits(self, num):
      result = [0] * (num+1)
      offset = 0
      for i in range(1,num+1):
         if i & i-1 == 0:
            result[i] = 1
            offset = 0
         else:
            offset+=1
            result[i] = 1 + result[offset]
      return sum(result)
ob1 = Solution()
print(ob1.countBits(5))

入力

5

出力

7

  1. 範囲内の未設定ビットをカウントするPythonプログラム。

    正の数とビットの範囲が与えられます。私たちのタスクは、範囲内の未設定ビットをカウントすることです。 Input : n = 50, starting address = 2, ending address = 5 Output : 2 2〜5の範囲に「2」の未設定ビットがあります。 アルゴリズム Step 1 : convert n into its binary using bin(). Step 2 : remove first two characters. Step 3 : reverse string. Step 4 : count all unset bit 0 start

  2. 数値の合計ビットをカウントするPythonプログラムを作成しますか?

    最初に数値を入力し、bin()関数を使用してこの数値をバイナリに変換し、次に出力文字列の最初の2文字「0b」を削除し、次にバイナリ文字列の長さを計算します。 例 Input:200 Output:8 説明 Binary representation of 200 is 10010000 アルゴリズム Step 1: input number. Step 2: convert number into its binary using bin() function. Step 3: remove first two characters ‘0b’ of output binary st