반응형

https://www.acmicpc.net/problem/1789

 

1789번: 수들의 합

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

www.acmicpc.net

 

작은 수부터 더하면 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

+ Recent posts