[プログラマー]次の大きな数字


問題の概要


私はあなたに数字をあげます.
条件この数字より大きいです.
条件2進数に変換した場合、1の個数に等しい数字のうち最小の数.
彼を見つけた

アイデア


n+1から線形探索を行い,条件に合致することを確認する.
まず,このコードは完全にバイナリ数に変換するのではなく,バイナリ数を逆求める方法を用いたが,1の個数しか計算しなかった.

すくい取る


bin(10進数)、oct()、hex()などの組み込み関数もあります.
format()内蔵関数format(string,「#b」)でもできますが、除算でバイナリ数を実現しなければなりません...?

コード#コード#

def cvt_2(n):
    ctr = 0
    while n>0:
        if n%2 ==1:
            ctr+=1
        n=n//2
    return ctr

def solution(n):
    n_1 = cvt_2(n)
    t = n+1
    while True:
        ct = cvt_2(t)
        if(ct == n_1):
            break
        t +=1
    return t