문제
해결 과정
((2*n) - (l*(l-1))) % (2*l)
이 0으로 나누어떨어질 때
- 첫번째 항은
((2*n) - (l*(l-1))) // (2*l)
이 된다.
- 첫번째 항이 0보다 작다면
print(-1)
- 0보다 크거나 같다면 첫번째 항부터
l
개 만큼 출력
- 0으로 나누어떨어지지 않는다면,
l
을 1씩 더해줘서 리스트의 길이를 늘려나간다.
l
이 100보다 크다면 print(-1)
시행착오
- 너무나도 수학 문제
- 등차수열의 합 공식을 이용
풀이
import sys
n, l = map(int,sys.stdin.readline().split())
while True:
if ((2*n) - (l*(l-1))) % (2*l) == 0:
answer = ((2*n) - (l*(l-1))) // (2*l)
if answer < 0:
print(-1)
break
else:
print(*list(range(answer,answer+l)))
break
else:
l += 1
if l > 100:
print(-1)
break