[レベル2]次の大きな数字
4094 ワード
答えを出す。
def solution(n):
def count_one(n):
count = 0
for i in bin(n)[2:]:
if i == "1":
count += 1
return count
one_num = count_one(n)
for i in range(n + 1, 1000001):
if count_one(i) == one_num:
return i
まず受け取ったn
をバイナリに変換してから、1つの数を数えます.bin
関数を用いてバイナリに変換され、str
タイプに変換され、0b
で開始される.従って、
0b
部を除去するためにSleingを用い、for
ゲート数'1'
文字を囲んでいる.パラメータとして受信した
n
より大きい場合、バイナリに変換する場合、1の個数は同じ数字を見つける必要があるので、n
より大きい値からfor
ゲートを回転し、count_one
をバイナリに変換する場合、1の個数を与える.1の数が同じ数字が見つかれば、その数字を返すことができます.説明する。
def solution(n):
c = bin(n).count("1")
for m in range(n + 1, 1000001):
if bin(m).count("1") == c:
return m
論理は上記の「解1」と同じであるが、1
法を用いてcount()
の個数ルックアップをより簡単に実現した.Reference
この問題について([レベル2]次の大きな数字), 我々は、より多くの情報をここで見つけました https://velog.io/@t1won/Level-2-다음-큰-숫자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol