1052水瓶.py
1052水瓶。py [::-1]
:逆回転bin()
:バイナリ表示
[問題の概要]
N個の水瓶
K個>いっぱいの水瓶.
この場合、同じ数の水が入っている水瓶が2つしか合わない.
店が追加で買う水瓶の最高価格を求めます.
ex)N=3,K=1の場合、3つの水瓶で1つ以上の水瓶を作成します.
[解答]
2の平方はK個の水瓶に移動することができる.これは、問題にバイナリ形式でアクセスする必要があることを意味します.bin(3) == 0b11
bin(3)[::-1] == 11b0
bin(n)[::-1].index('1') == 0
"1"の最初のインデックスは0です.bin(n).count('1')
:「1」の個数.すなわち,バイナリ数でどれだけの水瓶を製造できるかを決定できる.
ex)3->0 b 11->2^1リットル水瓶、2^0リットル水瓶で製造されていることが確認できます.import sys
input = sys.stdin.readline
n, k = map(int, input().split())
cnt = 0
print((bin(n)[::-1].index('1')))
while bin(n).count('1') > k:
a = 2 ** (bin(n)[::-1].index('1'))
# 가장 말단의 이진수를 0으로 만들어주기 위해서
cnt += a
n += a
print(cnt)
Reference
この問題について(1052水瓶.py), 我々は、より多くの情報をここで見つけました
https://velog.io/@kingggyu/1052물병.py
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
cnt = 0
print((bin(n)[::-1].index('1')))
while bin(n).count('1') > k:
a = 2 ** (bin(n)[::-1].index('1'))
# 가장 말단의 이진수를 0으로 만들어주기 위해서
cnt += a
n += a
print(cnt)
Reference
この問題について(1052水瓶.py), 我々は、より多くの情報をここで見つけました https://velog.io/@kingggyu/1052물병.pyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol