문제1190--[기초-종합] 수 나열하기3(C)

1190: [기초-종합] 수 나열하기3(C)

[만든사람 : 전현석, 정종광(채점데이터 및 확인), 배준호(확인), 최웅선(확인), 김지혜(그림) (2013)]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

본 문제는 C 의 빠른 기초 학습을 위해 설계된 문제로서 C 코드 제출을 기준으로 설명되어 있습니다.
------

어떤 규칙에 따라 순서대로 수를 나열한 것을 수열(sequence)이라고 한다. 

예를 들어
1, -1, 3, -5, 11, -21, 43, ... 은
1 부터 시작해서, 이전 수에 -2 를 곱한 다음에 1 을 더 더해서 다음 수를 만든 수열이다.

이런 이상한 수열을 알게 된 영일이는 또 궁금해졌다.
"그렇다면? .... 13 번째 수는 뭘까?"

영일이는 물론 수학을 아주 잘하지만 이런 문제는 거의 본 적이 없었다. 
그래서 프로그램을 만들어 더 큰 수열도 자동으로 계산하고 싶어졌다.

수열의 시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때,
n 번째 수를 출력해보자. 

** 컴퓨터에서 랜덤으로 난수를 만들어 내는 방법으로 선형합동생성(linear congruential generator) 방법이라는 것이 있다. 
이전에 만들어진 난수에 어떤 값을 곱하고, 어떤 값을 더 한 후, 다시 어떤 값으로 나눈 나머지 값을 다음 난수로 사용하는 방법을 사용한다. 
여러 가지 세트의 값들을 사용할 수 있지만... n 번째 수를 Xn 이라고 할 때,  Xn+1 = (7*7*7*7*7*Xn+0) % 2147483647 과 같은 생성식으로
수열의 시작값을 1, 곱할 값을 7*7*7*7*7, 더할 값은 0, 그렇게 얻어낸 값을 2147483647 로 나누어 나머지를 다시 다음 수로 뽑아내보면, 
만들어지는 수들이 규칙성이 없는 것처럼 만들어지게 된다는 것을 알 수 있다. 시작 값을 1 이 아닌 다른 수로 바꾸어도 규칙성이 없는 것처럼 보인다. 

입력 설명

수열의 시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째 인지를 나타내는 정수(n)가
공백으로 구분되어 입력된다. 
(-50<=a,m,d<=50, 0<=n<=10) 

출력 설명

수열의 n 번째 수를 출력한다.

입력 예시 Copy

1 -2 1 8

출력 예시 Copy

-85

도움

기초100제(c)1 v1.5 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.

출처/분류