1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def gcd(a,b):
if b==0 : return a
else :return gcd(b,a%b)
n=int(input())
nums=[int(input()) for i in range(n)]
nums.sort()
start=min(nums)
end=max(nums)
gcdAnswer=gcd(nums[1]-nums[0],nums[2]-nums[1])
for i in range(n-2):
gcdAnswer = gcd(gcd(nums[i+1] - nums[i], nums[i+2] - nums[i+1]), gcdAnswer)
print( (end-start)//gcdAnswer-n+1)
|
cs |
문제 읽어보면 추가 되는 나무들은 무조건 기존 나무 사이에만 넣을수있으므로
공차수열을 만들어야 하고
수열의 양 끝이 start, end
공차는 입력받은 숫자들을 정렬시키고 수들의 차이의 최대공약수를 이용해서 구함
참고로 gcd는 연산의 교환법칙( commutative property) 에 대해서 참임
반응형
'python-algorithm' 카테고리의 다른 글
백준 11508 2+1 세일 (0) | 2021.12.27 |
---|---|
백준 13699 점화식 (0) | 2021.12.27 |
백준 5347 LCM (0) | 2021.12.27 |
백준 1940 주몽 (0) | 2021.12.27 |
백준 14490 백대열 (0) | 2021.12.27 |
댓글