-
백준 2885(초콜릿 식사)전공/알고리즘 2020. 10. 4. 23:15
2^n개를 무조건 절반씩 쪼갤 수 있을때를 묻는 문제
이진수를 생각하면 된다.
구현도 쉽고 아이디어도 쉬운 문제
아 주의해야 할 점이 아래 코드에서 K==num이랑 K>num일때랑 따로 구분해서 설정해주어야한다.
#include<iostream> using namespace std; #define MAX 20 int main() { int K; cin >> K; int num = 1, min_n=-1, how1=0,how2=0; for (int i = 0; i < 20; i++) { num *= 2; } for (int i = 20; i >= 0; i--) { if (min_n==-1 && K > num) { min_n = num*2; how1 = i+1; } else if (min_n == -1 && K == num) { min_n = num; how1 = i; } if (K >= num) { K -= num; if (K == 0) { how2 = i; break; } } num /= 2; } cout << min_n << " " << how1-how2 << '\n'; }
'전공 > 알고리즘' 카테고리의 다른 글
백준 13424(비밀 모임) (0) 2020.10.05 백준 15886(내 선물을 받아줘 2) (0) 2020.10.05 백준 1309(동물원) (0) 2020.10.04 백준 10653(마라톤 2) (0) 2020.10.02 백준 1939(중량제한) (0) 2020.09.30