개발/알고리즘
17087 실버 2 ) 숨바꼭질 6 - 유클리드 호제법
차가운콩
2024. 10. 8. 15:27
풀이: 배열을 입력받고 모든 값을 m으로 뺀 절대값으로 변환한다
그리고 모든 수의 최대공약수를 유클리드 호제법으로 구하면 된다
#include <iostream>
#include <cmath>
using namespace std;
int divide(int a, int b) {
if(a % b == 0) {
return b;
}
return divide(b, a % b);
}
int main() {
int n, m;
cin >> n >> m;
int* arr = new int[n+1];
for(int i = 0; i < n; i++) {
cin >> arr[i];
arr[i] = abs(arr[i] - m);
}
int cs = arr[0];
for(int i = 1; i < n; i++) {
if(cs > arr[i]) {
cs = divide(cs, arr[i]);
}
else {
cs = divide(arr[i], cs);
}
}
cout << cs;
}