어흥

[백준 1789] 수들의 합 (C++) 본문

알고리즘/백준

[백준 1789] 수들의 합 (C++)

라이언납시오 2021. 3. 31. 18:05
728x90
반응형

문제 링크: www.acmicpc.net/problem/1789

 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

1. 주의할 점

- 계산 과정에서 int의 범위를 벗어날 수도 있다

 

2. 구현

- 서로 다른 자연수 N개 + N이 최대가 되도록 → 1+2+3+...N-1+N가 최대 N개. 즉, N*(N+1)/2 <=Num을 만족하는 최대 N을 구하면 된다

- N*(N+1) 계산 과정에서 int를 벗어날 수 있기 때문에 Long Long처리를 해준다

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    long long num,result;
    cin >> num;
    result = sqrt(2*num);
    while(result){
        if((long long)result*(result+1)<=2*num) break;
        else result--;
    }
    cout<<result;
    return 0;
}
728x90
반응형
Comments