※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 23323번 문제인 황소 다마고치이다.
문제는 아래 링크를 확인하자.

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

 

23323번: 황소 다마고치

첫 번째 테스트 케이스는 $n = 7$, $m = 1$ 이며, 다음의 방법으로 황소를 $4$일 동안 살릴 수 있다. $1$일 : 체력이 $7 \rightarrow 3$으로 바뀐다. ($\frac{7}{2} = 3.5$이므로, 소수점 이하를 버려 $3$이 된다.)

www.acmicpc.net

밤에 황소가 죽지 않게 하려면 그날 낮에 황소의 체력을 2 이상으로 만들어두기만 하면 된다. 즉, 황소의 체력이 1이 된 다음 먹이를 매일 낮에 1씩 주는 것을 반복하기만 하면 황소를 최대한 오랫동안 살려둘 수 있다. 다른 말로, 먹이를 하루에 1씩만 사용하는 것으로도 충분히 황소의 생존 일수를 하루씩 더 늘릴 수 있다.

 

따라서, n의 이진표기 자릿수와 m을 합한 값이 문제의 답이 된다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;
typedef long long ll;

int T;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> T;
	while (T--) {
		ll N, M, cnt = 0; cin >> N >> M;
		while (N) {
			N >>= 1, cnt++;
		}
		cout << M + cnt << '\n';
	}
}
728x90

+ Recent posts