개발/백준

백준 2981번

유르디 2018. 8. 3. 01:02

2981번 검문 문제입니다.


문제 이름과 상관없이 n개의 자연수를 나눴을 때 일정한 값이 나오는 i(2개 이상이 될수 있음)을 찾는 문제입니다.


상황을 수식으로 표현하면 i번째 자연수 A[i]를 나머지가 j인 임의의 정수 m으로 나눴을때의 A[i]는 임의의 정수 k[i] * m + j라고 표현할 수 있습니다.


변수 m이 우리가 구하고자 하는 값이므로, j를 없애기 위해 A[i]와 A[i-1]을 계산해봅니다.


A[i] - A[i-1] = m * (k[i] - k[i-1]) 으로 정리할 수 있습니다.


이제 m을 구하기 위해서 i번째와 i-1번째 자연수 값의 차이를 구하고, 그 과정에서 등장하는 최대공약수와 그의 약수들을 구하면 됩니다.


컴퓨터공학을 위해 수학을 배워야 하는 이유가 꾸준히 나타나는 것 같습니다.



'개발 > 백준' 카테고리의 다른 글

백준 3036번  (0) 2018.08.03
백준 9252번  (0) 2018.08.01
백준 9461번  (0) 2018.08.01
백준 11066번  (0) 2018.08.01
백준 1520번  (0) 2018.07.26