문제
정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.
- 2를 곱한다.
- 1을 수의 가장 오른쪽에 추가한다.
A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.
입력
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
ex)
2 162
4 42
100 40021
출력
A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.
ex)
5
-1
5
코드
a,b=map(int,input('').split())
count=0
while(1):
if a==b:
count=count+1
break
elif (a>b) or (b%2!=0 and b%10!=1):
count=-1
break
if b%2==0:
b=b//2
count=count+1
else:
b=b//10
count=count+1
print(count)
'Python > 백준 python' 카테고리의 다른 글
[파이썬/python] 백준 1085번 직사각형에서 탈출 (0) | 2022.03.10 |
---|---|
[파이썬/python] 백준 10809번 알파벳 찾기 (0) | 2022.03.10 |
[파이썬/python] 백준 16212번 정열적인 정렬 (0) | 2022.03.09 |
[파이썬/python] 백준 3059번 등장하지 않는 문자의 합 (0) | 2022.03.09 |
[파이썬/python] 백준 10821번 정수의 개수 (0) | 2022.03.08 |