n, k = map(int, input().split())
m = (k * (k + 1)) // 2
if n < m:
print(-1)
else:
e = n - m
if e % k == 0:
print((k - 1))
else:
print(k)
n과 k를 입력 받는다
m은 k와 k+1을 곱한 값을 2로 나눈 값으로 저장한다
그 후 n과 m의 크기르 비교해서 m이 n보다 더 크다면 -1을 출력, 만약 m이 n보다 크거나 그 외라면 e라는 변수에 n-m을 저장해서 n-m을 K로 나눈 값이 0이라면 k-1을 출력한다
그렇지 않다면 k-1이 아닌 결과값 k를 출력한다
n, k = map(int, input().split())
check = k*(k+1) //2
if n < check:
print(-1)
elif (n - check) % k == 0:
print(k-1)
else:
print(k)
n: 목표 합
k: 서로 다른 자연수의 개수
check: 서로 다른 자연수 중 가장 작은 k개의 합
예: k = 3 → 1 + 2 + 3 = 6
이 값은 n을 k개의 서로 다른 자연수로 표현할 수 있는 최소 합
만약 n이 check보다 작다면 -> 불가능
서로 다른 k개의 자연수 합은 최소 k*(k+1)//2이기 때문
n - check는 추가로 분배할 수 있는 여유 금액
이것을 k로 나누어 떨어지면 → k개의 수에 같이 균등하게 더할 수 있다 → 차이가 크지 않음
예: [1,2,3] 에서 각각 +2 하면 [3,4,5] → 여전히 서로 다르고 차이 일정함
이 경우 k - 1 출력
나누어 떨어지지 않으면 → 균등하게 나누기 불가능 → 일부 수가 더 커짐 → 차이가 커짐
이 경우 k 출력