[백준/파이썬] 1024번 수열의 합 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1024번 수열의 합
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
정수 N을 길이 L 이상 100 이하인
연속된 정수 수열의 합으로 나타내는 문제입니다.
가능한 수열이 여러 개면 길이가 가장 짧은 것을 출력합니다.
코드
n,l=map(int,input().split())
while l <= 100:
if l%2==0:
a=n//l-l//2+1
b=n//l+l//2
else:
a=n//l-l//2
b=n//l+l//2
if b*b+b+a-a*a==2*n:break
l+=1
try:
if a<0 or b<0 or b*b+b+a-a*a!=2*n:raise Exception
print(*[i for i in range(a,b+1)])
except:print(-1)
설명
길이 l을 L부터 100까지 증가시키며
수열의 시작값 a, 끝값 b를 계산해 검사합니다.
a + (a+1) + ... + b = N 조건을 만족하면 즉시 출력하고,
끝까지 없으면 -1을 출력합니다.
댓글남기기