서로 다른 자연수를
n
개 더해서s
를 만들 때, 가장 큰n
을 구하는 문제다. 수학적 원리르 통해 손쉽게 풀 수 있다.
1+2+3+...+n
이다. 이 식은 간단하게 인데, 이 합을 라고 할 때 에 대한 방정식은 이다. 이때 더 큰 수 을 구해야 하므로 근의 공식 중 큰 값에 round
를 씌우자.import sys
s = int(sys.stdin.readline().rstrip())
# 서로 다른 자연수를 최대한 많이 더해 자연수 s을 만들자.
# 1+2+...+n = n*(n+1)/2로 이때 사용되는 다른 수는 n개.
n = (-1 + (8*s + 1)**0.5) / 2
n = int(n)
print(n)