입력 | 출력 |
---|---|
200 | 19 |
: 1부터 n까지의 합인 n*(n+1)//2 공식 활용
1부터 n까지 모두 더하는 것이 n을 최대로 만들 수 있다.
1부터 19까지의 합은 190이고 1부터 20까지의 합은 210이다. 200을 만들고, n이 최댓값일 수 있는 방법은 1부터 20까지의 수 중 하나(10)를 빼는 것이다.
따라서 1부터 i까지의 합이 입력값이면 i를 출력하면 되고, i보다 작다면 i-1을 출력하면 된다.
s = int(input())
n = 1
while n*(n+1)//2 <= s:
n += 1
print(n-1)
m = int(input())
s, e = 1, m
while s<=e:
mid = (s+e)//2
if (mid*(mid+1))//2 > m:
e = mid-1
else:
ans = mid
s = mid + 1
print(ans)