어흥
[백준 1789] 수들의 합 (C++) 본문
728x90
반응형
문제 링크: www.acmicpc.net/problem/1789
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
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 1821] 수들의 합 (Java) (0) | 2021.03.31 |
---|---|
[백준 2003] 수들의 합 2 (C++, Java) (0) | 2021.03.31 |
[백준 2671] 잠수함식별 (C++, Java) (0) | 2021.03.30 |
[백준 1013] Contact (C++, Java) (0) | 2021.03.30 |
[백준 13144] List of Unique Numbers (C++) (0) | 2021.03.26 |
Comments