[C] 31868번: 수박 게임

[C] 31868번: 수박 게임
2026-03-10

문제#

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

11단계 과일은 체리, NN단계 과일은 수박이다.

ii단계 과일 22개를 소모하여 i+1i+1단계 과일 11개를 만들 수 있다. (1iN1)(1 \leq i \leq N-1)

KK개의 체리로 최대 몇 개의 수박을 만들 수 있는지 구해보자!

입력#

첫 번째 줄에 정수 NNKK가 공백을 사이에 두고 주어진다. (2N30;1K109)(2 \leq N \leq 30; 1 \leq K \leq 10^9)

출력#

첫 번째 줄에 만들 수 있는 수박의 최대 개수를 출력한다.

풀이#

N단계 과일 1개를 만들기 위해 필요한 체리 개수는

2N12^{N-1}

개입니다.

따라서 만들 수 있는 수박의 최대 개수는

K2N1\left\lfloor \frac{K}{2^{N-1}} \right\rfloor

입니다.

코드#

#include <stdio.h>
int main() {
int n, k;
int m = 1;
scanf("%d %d", &n, &k);
for (int i = 1; i < n; i++) {
m *= 2;
}
printf("%d\n", k / m);
return 0;
}