728x90
문제
서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?
입력
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
출력
첫째 줄에 자연수 N의 최댓값을 출력한다.
서로다른 자연수 n개의 합이 s라고한다면 최댓값을 구하기 위해선 자연수중 가장 작은값(1)부터 누적해서 더하다가 S 가 됬을때 그때 누적된 수중 가장 큰값을 구해주면된다. 이때 숫자범위가 커 자료형을 long long 타입을 사용하였다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
long long N = 0;
long long answer = 0;
cin >> N;
for (long long i = 0, j = 0; j < N; ++i)
{
j += i;
if (j > N)
{
break;
}
answer = i;
}
cout << answer;
return 0;
}
728x90
'프로그래밍 > 백준, 프로그래머스 문제 풀이' 카테고리의 다른 글
백준 10610번 30 풀이(c++) (0) | 2024.01.17 |
---|---|
백준 16953번 A->B 풀이 (c++) (0) | 2024.01.16 |
백준 2217번 로프 풀이(c++) (0) | 2024.01.15 |
백준 5585번 거스름돈 (C++풀이) (0) | 2024.01.15 |
백준 1541번 잃어버린 괄호 (c++) (0) | 2024.01.15 |
댓글