어디까지 쪼개야 K를 만들 수 있을지는 입력받은 숫자를 이진수로 바꾸면 쉽게 알 수 있다.
예를 들어 1023인 경우 1024를 1이 될 때 까지 잘라야 만들 수 있다.
1023을 이진수로 나타내면 1111111111 이다. (1024를 10번 자름)
1022인 경우 1024를 2가 될 때 까지 잘라야 만들 수 있다.
1022를 이진수로 나타내면 1111111110 이다. (1024를 9번 자름)
입력받은 숫자를 이진수로 만들고 마지막 1이 나올 때까지 자르면 원하는 숫자를 만들 수 있다.
10001010 처럼 중간에 0이 있을 수도 있는데, 마지막 1에 도달하기 위해서는 0이어도 잘라야 하니 고려하지 않아도 된다.
import sys
def read():
return sys.stdin.readline().rstrip()
def solution(k):
n = 0
while 2**n < k:
n += 1
if 2**n == k:
print(k, 0)
return
binary = bin(k)[2:]
last_one_index = -1
for i in range(len(binary)-1, -1, -1):
if binary[i] == '1':
last_one_index = i
break
print(2**n, last_one_index+1)
K = int(read())
solution(K)