728x90
N개의 자연수의 합이 S일 때
S가 주어지고 N의 최댓값을 구하는 문제입니다.
N이 최대이기 위해서는 가능한 많은 수를 써야합니다.
중복되는 수는 사용할 수 없기 때문에 1부터 순차적으로 더해줍니다.
마지막으로 더한 숫자를 이용해서 200에 맞아 떨어지게 해줄 수 있으므로
순차적으로 더해서 S보다 커지면 -1을 해줍니다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char* argv[])
{
long long n;
long long sum = 0;
long long count = 1;
cin >> n;
while (1) {
sum += count;
if (sum > n) {
--count;
break;
}
++count;
}
cout << count << endl;
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 16282번 Black Chain (0) | 2019.10.02 |
---|---|
[C++] 백준 16283번 Farm (0) | 2019.10.02 |
[C++] 백준 1964번 오각형, 오각형, 오각형... (0) | 2019.10.02 |
[C++] 백준 2965번 캥거루 세마리 (0) | 2019.10.02 |
[C++] 백준 1075번 나누기 (0) | 2019.10.02 |