3
2008-07-26 07:06:21
65
음...처음엔 막막했는데 조금만 고민해보니 생각보다 어려운 문제는 아니네요.
수열의 개수를 n으로 잡고, 시작값을 k로 잡았을 때 수열의 합이 1000이 되어야 하므로
n( 2k + (n-1) ) / 2 = 1000 이니까,
n^2 + (2k - 1)n - 2000 = 0 를 만족하는 n과 k의 자연수해를 구하면 되는데요.
자연수해이므로 n은 곱해서 -2000이 나오는 정수 중 양의 값(자연수)이고,
두 정수를 더하면 2k - 1이 나오는데, k가 자연수이므로 두 정수의 합이 홀수여야 합니다.
2000은 2^4 * 5^3 * -1 인데, 두 정수의 합이 홀수여야 하므로 두 자연수중 하나가 홀수여야 한다는 얘기이고, 연속된 수라고 했으므로 n은 2 이상, 그래서 두 정수는
( -5, 400 )
( -25, 80 )
( 125, -16 )
* 두 수의 합이 양수(2k-1)이어야 하므로 음수 부호는 작은 숫자에 붙습니다.
n또한 양수이므로 각각의 숫자들 중 양의 해인 5, 25, 16이 되고,
n이 5일때 400 - 5 = 395가 2k - 1이므로 k는 198, n이 5이므로 이때의 수열은
198, 199, .... , 202
n이 25일때 같은 방법으로 k는 28, 수열은
28, 29, ..., 52 (수열의 마지막 값은 28 + 25 - 1)
n이 16일때 마찬가지로 k는 55
55, .... 70 (마지막 값이 55 + 16 - 1)
이 되는군요.
.......일어는 못하는 관계로 번역은 못하고, 글쓰신 분께서 인수분해랑 수열 공식 힌트를 주셔서 제 맘대로 풀어봤습니다. (김정훈씨가 푸신 방법과 다를 수 있을지도 모르지만...아마 비슷하게 풀지 않으셨을까 생각합니다.)
업계 8년차 프로그래머가 진지 좀 많이 먹어봤습니다.-_-;;; (아이 배불러-_-;;; )