728x90
반응형
27961번: 고양이는 많을수록 좋다
문제
https://www.acmicpc.net/problem/27961
27961번: 고양이는 많을수록 좋다
올바른 행동 순서가 될 수 있는 하나의 예시는 아래와 같으며, $4$번보다 더 작은 행동 횟수로 $6$마리의 고양이를 마도카의 집에 들이는 것은 불가능하다. 초기 상태($0$마리) $\rightarrow$ 생성
www.acmicpc.net
풀이
처음에 고양이는 0마리 있고, 1마리 생성하거나 현재 K마리의 고양이가 있으면 1~K마리의 고양이를 복제하는 것이 가능하다. 즉, 고양이가 1마리 이상 있을 때는 복제 연산만 사용하면 된다. 이때, 정확히 N마리의 고양이를 만들어야 하므로 2 * K ≥ N 이 되는 순간 연산이 종료된다. 따라서 2의 제곱승 꼴로 증가시키다가 N 이상이 되는 순간까지의 횟수다.
이렇게 구현을 해도 되지만 (log2 N) + 1을 출력해도 될 것 같다. (+1을 하는 이유는 맨 처음 1마리를 생성하는 연산 때문)
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
long long n, ans = 0, a = 0;
cin >> n;
while (a < n) {
if (a == 0)
a++;
else
a *= 2;
ans++;
}
cout << ans;
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 27963 합금 주화 (0) | 2023.04.18 |
---|---|
[백준 / BOJ] C++ 27962 오렌지먹은지오랜지 (0) | 2023.04.18 |
[백준 / BOJ] C++ 27960 사격 내기 (0) | 2023.04.17 |
[백준 / BOJ] C++ 27959 초코바 (0) | 2023.04.17 |
[백준 / BOJ] C++ 2041 숫자채우기 (3) | 2023.04.15 |