※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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
'BOJ' 카테고리의 다른 글
[BOJ 23324 // C++] 어려운 모든 정점 쌍 최단 거리 (0) | 2023.01.19 |
---|---|
[BOJ 27220 // C++] Ромб (0) | 2023.01.18 |
[BOJ 27246 // C++] Различные квадраты (0) | 2023.01.18 |
[BOJ 27194 // C++] Meeting Near the Fountain (0) | 2023.01.18 |
[BOJ 27262 // C++] Лифт (0) | 2023.01.17 |