A를 B로
의견: 0
정수 \(A\)를 정수 \(B\)로 바꾸려고 한다. 사용할 수 있는 연산은 다음 두 가지뿐이다.
-
수에 \(2\)를 곱한다.
-
수의 가장 오른쪽에 숫자 \(1\)을 붙인다(즉 \(x \to 10x + 1\)).
\(A\)를 \(B\)로 만들기 위해 필요한 연산의 최소 횟수에 \(1\)을 더한 값을 구하여라. 만들 수 없으면 \(-1\)을 출력한다.
(연산 횟수에 \(1\)을 더하는 것은, \(A\)부터 \(B\)까지 거쳐 간 수의 개수를 세는 것과 같다.)
\(1 \le A < B \le 10^{18}\) 또는 \(A = B\).
첫째 줄에 두 정수 \(A\)와 \(B\)가 공백으로 구분되어 주어진다.
\(A\)를 \(B\)로 만드는 데 필요한 연산 횟수 \(+1\)을 출력한다. 불가능하면 \(-1\)을 출력한다.
2 162
5
2→4→8→81→162 (×2, ×2, ×10+1, ×2) → 거쳐 간 수 5개.
4 42
-1
42는 4에서 만들 수 없다 → -1.
막혔나요? 코인으로 단계별 힌트를 잠금 해제하세요 — 첫 힌트는 가벼운 방향 제시, 뒤로 갈수록 더 많이 알려 줍니다. 문제를 풀면 모든 힌트가 무료로 공개됩니다.
riseoj 작성
출처 Original
평가 및 의견
A를 B로
Log in to rate problems.
아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.
풀이 제출
A를 B로