문제 설명
•
과 이 주어질 때, 합이 이면서, 길이가 적어도 인 가장 짧은 연속된 음이 아닌 정수 리스트를 구하는 문제
예제 입력/출력
•
입력1
18 2
Plain Text
복사
•
출력1
5 6 7
Plain Text
복사
제약 조건
•
•
문제 풀이
•
접근 등차수열의 합 공식 활용 -
◦
이 문제를 해결하기 위한 핵심 아이디어는 등차수열의 합 공식을 활용하는 것
◦
연속된 L개의 수열의 합은 다음과 같이 표현할 수 있다.
◦
위 식을 x에 대해 정리하면 다음과 같다.
▪
◦
유효한 x의 조건은 다음과 같다.
1.
•
x가 정수여야 올바른 연속된 음이 아닌 정수 리스트가 나온다.
2.
•
문제에서 음이 아닌 정수 리스트라 했기 때문에 첫항인 x + 1은 0보다 크거나 같아야한다.
풀이 코드
N, L = map(int, input().split())
for i in range(L, 101):
x = N / i - (i + 1) / 2
if int(x) == x: # x는 정수여야 한다.
x = int(x)
if x + 1 >= 0: # 첫항(x+1)은 0보다 크거나 같아야한다.
for j in range(x + 1, x + i + 1):
print(j, end=" ")
break
else:
print(-1)
Python
복사