반응형

https://www.acmicpc.net/problem/16953

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.

www.acmicpc.net

 

각 연산을 역으로 수행하며 B를 A로 변환시켜주었습니다.

b가 짝수라면, 2로 나누어줍니다. (1번 연산)

b의 일의 자리 숫자가 1이라면, 10으로 나누어줍니다. (2번 연산)

두 연산을 취할 수 없는 상태라면, B는 A가 될 수 없습니다.

 

#include <cstdio>
int a, b, c = 1;
int main() {
	scanf("%d %d", &a, &b);
	while (a < b) {
		if (b % 2 == 0) b /= 2;
		else if (b % 10 == 1) b /= 10;
		else break;
		c++;
	}
	printf("%d", a == b ? c : -1);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 14676 : 영우는 사기꾼?  (0) 2021.11.15
백준 18870 : 좌표 압축  (0) 2021.11.15
백준 1461 : 도서관  (0) 2021.11.15
백준 16438 : 원숭이 스포츠  (0) 2021.11.15
백준 1105 : 팔  (0) 2021.11.15

+ Recent posts