πŸ•οΈ ICPC Sinchon/Basic Math

[BOJ][C++] λ°±μ€€ 17087번: μˆ¨λ°”κΌ­μ§ˆ 6

선달 2023. 1. 24. 02:30
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/17087

 

17087번: μˆ¨λ°”κΌ­μ§ˆ 6

μˆ˜λΉˆμ΄λŠ” 동생 Nλͺ…κ³Ό μˆ¨λ°”κΌ­μ§ˆμ„ ν•˜κ³  μžˆλ‹€. μˆ˜λΉˆμ΄λŠ” ν˜„μž¬ 점 S에 있고, 동생은 A1, A2, ..., AN에 μžˆλ‹€. μˆ˜λΉˆμ΄λŠ” κ±Έμ–΄μ„œ 이동을 ν•  수 μžˆλ‹€. 수빈이의 μœ„μΉ˜κ°€ XμΌλ•Œ κ±·λŠ”λ‹€λ©΄ 1초 후에 X+Dλ‚˜ X-D둜 이

www.acmicpc.net

 

문제

μˆ˜λΉˆμ΄λŠ” 동생 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κ°’μ˜ μ΅œλŒ“κ°’μ„ 좜λ ₯ν•œλ‹€.

 

풀이

λ™μƒμœ„μΉ˜μ™€ μˆ˜λΉˆμ΄μœ„μΉ˜ μ‚¬μ΄μ˜ 거리듀을 κ΅¬ν•˜κ³  ν•΄λ‹Ή κ±°λ¦¬λ“€μ˜ μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λ©΄ λœλ‹€.

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int getGcd(int a, int b) { // a<b
    int tmp;
    while(a!=0){
        tmp = b%a;
        b = a;
        a = tmp;
    }
    return b;
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    
    int n, s, input;
    cin >> n >> s;
    vector<int> a(n);
    for(int i=0; i<n; i++) {
        cin >> input;
        a[i] = abs(input - s);
    }
    
    int gcd = a[0];
    sort(a.begin(), a.end());
    for(int i=0; i<n; i++)
        gcd = getGcd(gcd, a[i]);
    
    cout << gcd;
    
    return 0;
}

/*
 */
λ°˜μ‘ν˜•