반응형
https://www.acmicpc.net/problem/1789
작은 수부터 더하면 S를 구성하는 자연수의 개수 N의 최댓값을 구할 수 있습니다.
1부터 순서대로 더하다가, 더한 값이 S를 초과하는 시점에 마지막 2개의 값을, S를 만들 수 있는 수로 치환해주면 됩니다.
예를 들어, S = 8이라면,
1 + 2 + 3 + 4 > 8 이므로, 3 + 4가 5로 치환됩니다.
2개의 수가 1개의 수로 치환되므로, N의 최댓값은 초과한 시점의 개수 - 1 입니다.
#include <cstdio>
long long s;
int n = 1;
int main() {
scanf("%lld", &s);
while ((s -= n) > n++);
printf("%d", --n);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1092 : 배 (0) | 2021.11.20 |
---|---|
백준 1439 : 뒤집기 (0) | 2021.11.20 |
백준 23254 : 나는 기말고사형 인간이야 (1) | 2021.11.20 |
백준 13904 : 과제 (0) | 2021.11.20 |
백준 2468 : 안전 영역 (0) | 2021.11.20 |