728x90
막대를 반으로 잘라서 Xcm를 만들 때
최소 막대기의 수를 구하는 문제입니다.
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main(int argc, char* argv[])
{
int n = 64;
int sum = 0;
int find;
vector<int> v;
cin >> find;
while (1) {
if (n + sum == find) {
v.push_back(n);
sum += n;
break;
}
else if (n + sum < find) {
v.push_back(n);
sum += n;
n /= 2;
}
else if (n + sum > find) {
n /= 2;
}
}
cout << v.size() << endl;
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 1076번 저항 (0) | 2019.09.13 |
---|---|
[C++] 백준 2010번 플러그 (0) | 2019.09.13 |
[C++] 백준 3046번 R2 (0) | 2019.09.13 |
[C++] 백준 10798번 세로읽기 (0) | 2019.09.13 |
[C++] 백준 2960번 에라토스테네스의 체 (0) | 2019.09.13 |