본 문제는 python 의 빠른 기초 학습을 위해 설계된 문제로서 python 코드 제출을 기준으로 설명되어 있습니다.
------
어떤 규칙에 따라 순서대로 수를 나열한 것을 수열(sequence)이라고 한다.
예를 들어
1, -1, 3, -5, 11, -21, 43, ... 은
1 부터 시작해서, 이전 수에 -2 를 곱한 다음에 1 을 더 더해서 다음 수를 만든 수열이다.
이런 이상한 수열을 알게 된 영일이는 또 궁금해졌다.
"그렇다면? .... 13 번째 수는 뭘까?"
영일이는 물론 수학을 아주 잘하지만 이런 문제는 거의 본 적이 없었다.
그래서 프로그램을 만들어 더 큰 수열도 자동으로 계산하고 싶어졌다.
수열의 시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때,
n 번째 수를 출력해보자.
** 컴퓨터에서 랜덤으로 난수를 만들어 내는 방법으로 선형합동생성(linear congruential generator) 방법이라는 것이 있다.
이전에 만들어진 난수에 어떤 값을 곱하고, 어떤 값을 더 한 후, 다시 어떤 값으로 나눈 나머지 값을 다음 난수로 사용하는 방법을 사용한다.
여러 가지 세트의 값들을 사용할 수 있지만... n 번째 수를 X
n 이라고 할 때, X
n+1 = (7*7*7*7*7*X
n+0) % 2147483647 과 같은 생성식으로
수열의 시작값을 1, 곱할 값을 7*7*7*7*7, 더할 값은 0, 그렇게 얻어낸 값을 2147483647 로 나누어 나머지를 다시 다음 수로 뽑아내보면,
만들어지는 수들이 규칙성이 없는 것처럼 만들어지게 된다는 것을 알 수 있다. 시작 값을 1 이 아닌 다른 수로 바꾸어도 규칙성이 없는 것처럼 보인다.