이 문제를 이해해보면 최대공약수를 구하는 문제이다. 최대공약수를 구할 수 있는 재귀함수를 선언하고 진행한다.
#include <iostream>
#include <vector>
using namespace std;
int 최대공약수(int a, int b) { //a가 더 커야 됨
if (b == 0) {
return a;
}
return 최대공약수(b, a % b);
}
int 숨바꼭질(int s, vector <int> v) {
int result = v[0];
for (int i = 1;i < v.size();i++) {
result = 최대공약수(result,v[i]);
}
return result;
}
int main() {
int n, s;
cin >> n >> s;
vector <int> v(n);
while (n--) {
int a;
cin >> a;
v.push_back(abs(s-a));
}
cout << 숨바꼭질(s, v);
return 0;
}
'백준' 카테고리의 다른 글
[백준/C++] 2840: 행운의 바퀴 (0) | 2025.03.06 |
---|---|
[백준/C++] 4949: 균형잡힌 세상 (0) | 2025.02.26 |
[백준/C++] 2164: 카드2 (0) | 2025.02.26 |
[백준/C++] 10757: 큰 수 A+B (0) | 2025.02.24 |
[백준/C++] 11478: 서로 다른 부분 문자열의 개수 (0) | 2025.02.18 |