문제
수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다.
수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이동할 수 있다. 수빈이의 위치가 동생이 있는 위치와 같으면, 동생을 찾았다고 한다.
모든 동생을 찾기위해 D의 값을 정하려고 한다. 가능한 D의 최댓값을 구해보자.
입력
첫째 줄에 N(1 ≤ N ≤ 105)과 S(1 ≤ S ≤ 109)가 주어진다. 둘째 줄에 동생의 위치 Ai(1 ≤ Ai ≤ 109)가 주어진다. 동생의 위치는 모두 다르며, 수빈이의 위치와 같지 않다.
출력
가능한 D값의 최댓값을 출력한다.
풀이 과정
수빈이는 D 간격으로만 움직일 수 있으므로, D는 동생들과의 거리 간격의 최대공약수가 되어야 한다.
import sys
import math
input = sys.stdin.readline
n, s = map(int, input().rstrip().split())
arr = list(map(int, input().rstrip().split()))
for i in range(n):
arr[i] = abs(s - arr[i])
if n == 1: print(arr[0])
else:
now = math.gcd(arr[0], arr[1])
for i in range(2, n):
now = math.gcd(now, arr[i])
print(now)
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 6603 : 로또 ( SILVER 2 ) / Python (1) | 2024.01.29 |
---|---|
[ BOJ ] 10997 : 별 찍기 - 22 ( SILVER 2 ) / Python (0) | 2024.01.29 |
[ BOJ ] 20207 : 달력 ( GOLD 5 ) / Python (0) | 2024.01.29 |
[ BOJ ] 13023 : ABCDE ( GOLD 5 ) / Python (0) | 2024.01.29 |
[ BOJ ] 15927 : 회문은 회문아니야!! ( GOLD 5 ) / Python (0) | 2024.01.29 |