키베이루's diary

[C++] 백준 16953번 A -> B 본문

알고리즘/기타

[C++] 백준 16953번 A -> B

키베이루 2022. 6. 21. 23:35

 

1) 문제설명

백준 Online Judge 16953번 A -> B

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

 

16953번: A → B

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

www.acmicpc.net

 

2) 아이디어

A에서 B로 생각하지 말고 B가 A가 되는 것으로 생각하였다.

1. B가 2로 나누어 떨어질 경우 2로 나눈다

2. B의 끝자리가 1일 경우 1을 떼어 준다.

3. 그 외의 경우는 B에서 A가 되는 것이 불가능하기 때문에 -1을 출력한다.

 

3) 코드

#include<iostream>
#include<queue>
#include<deque>
#include<string.h>
#include<math.h>
#include<cmath>
#include<stack>
#include<algorithm>

using namespace std;

int cnt = 0;
int main() {
	int a, b;
	cin >> a >> b;
	while (1) {
		if (b % 2 == 0) {
			b = b / 2;
		}
		else if (b % 10 == 1) {
			b = b / 10;
		}
		else {
			cout << -1 << endl;
			break;
		}

		cnt++;
		if (b == a) {
			cout << cnt+1 << endl;
			break;
		}
		if (b == 0) {
			cout << -1 << endl;
			break;
		}
	}
}

'알고리즘 > 기타' 카테고리의 다른 글

[C++] 백준 1920번 수 찾기  (0) 2022.07.05
[C++] 백준 10815번 숫자 카드  (0) 2022.07.05
[C++] 백준 1655번 가운데를 말해요  (0) 2022.06.20
[C++] 백준 11286번 절댓값 힙  (0) 2022.06.09
[C++] Vector  (0) 2022.06.03
Comments