https://www.acmicpc.net/problem/1094
문제가 말을 정말 어렵게 써놨는데... 쉽게 생각해보면
1. 막대 길이가 입력값 X보다 크면 2로 나눈다.
2. 만약 막대 길이가 입력값 x보다 작으면, 합에 더해지니까 입력값X에서 막대길이를 빼준다. 이땐 나눠준 것이니 횟수를 하나 증가시킨다.
3.이걸 반복하면, 결국에 x가 0이 되고 종료.
역시 알고리즘 풀 땐 샤프 들고 써봐야한다..
#include <iostream>
using namespace std;
int main()
{
int length = 64;
int x;
cin >> x;
int count = 0;
while (x > 0)
{
if (length > x)
length = length / 2;
else
{
x = x - length;
count++;
}
}
cout << count << endl;
return 0;
}
'백준 문제풀이 > 실버5' 카테고리의 다른 글
백준 1181번 - 단어 정렬 (0) | 2021.10.30 |
---|---|
백준 1037번 - 약수 (0) | 2021.10.30 |
백준 1059번 - 좋은 구간 (0) | 2021.10.30 |
백준 1010번 - 다리 놓기 (0) | 2021.10.29 |
백준 1292번 - 쉽게 푸는 문제 (0) | 2021.10.22 |