[C++] 백준 23323번: 황소 다마고치
문제 링크
문제 요약
1일이 지날 때마다 체력이 절반씩 출어드는 황소가 있다. 이 황소에게 먹이를 주면 그만큼 체력이 증가한다. 먹이는 현재 가지고 있는 먹이보다 작거나 같은 양을 줄 수 있고, 먹이를 주면 그만큼 가지고 있는 먹이가 줄어든다. 황소의 체력과 먹이가 주어질 때, 황소의 최대 수명을 구해야 한다.
접근 방법
쉬운 그리디 문제입니다. 입력이 에 달하기 때문에 int를 사용하면 오버플로가 발생할 수 있습니다. 이 사항은 문제에서도 매우 친절하게 설명해주고 있습니다.
황소의 체력이 1 남았을 때, 1만큼의 먹이를 주면 황소의 수명을 하루 연장시킬 수 있습니다. 이걸 반복하면 현재 가진 먹이의 양만큼 수명을 연장시킬 수 있습니다.
현재 체력을 2로 계속 나눠서 0이 될때까지의 수를 센 다음에, 줄 수 있는 먹이의 양을 더해주면 됩니다.
코드
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin >> t;
while (t--) {
long long n, m;
cin >> n >> m;
int cnt = 0;
while (n) {
n /= 2;
cnt++;
}
cout << cnt + m << '\n';
}
return 0;
}
Author And Source
이 문제에 관하여([C++] 백준 23323번: 황소 다마고치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@beclever/C-백준-23323번-황소-다마고치저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)