문제 링크 : https://www.acmicpc.net/problem/1024
공차가 1인 등차수열의 합 공식을 활용해서 풀었다.
첫째항을 j, 더하는 항의 개수를 i라고 하면 합은 i * (2 * j + i - 1) / 2이다. 이 합이 n이 되는 경우를 구하는 것이므로 앞의 식에 = n을 붙여서 j에 대한 방정식을 풀면 j = 0.5 * (2 * n / i - i + 1)이 나온다.
따라서 구하고자 하는 리스트는 j부터 i개의 수가 연속된 리스트이다. 단, 리스트에 음수가 들어갈 수 없으므로 음수가 들어가는 경우는 건너뛴다.
for문을 통해 i는 l~100까지 넣어주고 j 값을 구한 뒤에 j가 정수라면 result에 리스트를 넣는다. 다만, 리스트에 음수가 들어가면 안 되므로 음수가 들어간다면 result = -1을 해준다.
import sys
input = sys.stdin.readline
n,l = map(int,input().split())
result = -1
for i in range(l,101):
j = 0.5*(2*n/i - i+1)
if j.is_integer():
result = [k for k in range(int(j),int(j+i))]
if -1 in result:
result = -1
continue
break
if result == -1:
print(result)
else:
for i in result:
print(i,end=' ')
print()