티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/17087
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int N, S;
int arr[100001];
int main()
{
cin >> N >> S;
vector<int>v;
for(int i=0; i<N; i++)
{
cin >> arr[i];
v.push_back(abs(arr[i]-S));
}
int tmp = abs(arr[0]-S);
for(auto i : v)
{
tmp = gcd(tmp, i);
}
cout << tmp;
return 0;
}
최대공약수를 활용한 문제이다.
입력받은 수빈이의 위치 S와 동생 간의 거리 차이 값을 모두 구하여 따로 저장하고,
이 값들의 최대공약수를 구하면 D의 최대값이 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 2312번] 수 복원하기 (C++) (0) | 2025.04.15 |
---|---|
[백준 1064번] 평행사변형 (C++) (0) | 2025.04.14 |
[백준 2089번] -2진수 (C++) (0) | 2025.04.12 |
[백준 11576번] Base Conversion (C++) (0) | 2025.04.12 |
[백준 10973번] 이전 순열 (C++) (0) | 2025.04.11 |