Creative Code

[2981번]검문 본문

백준 문제풀이

[2981번]검문

빛하루 2023. 9. 4. 23:30

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

 

2981번: 검문

트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간

www.acmicpc.net

#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;

int gcd(int a, int b){
	int c;
	while (b != 0)
	{
		c = a % b;
		a = b;
		b = c;
	}
	return a;
}

int main() {
	int N;
	cin >> N;
	vector<int>num;
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	for (int i = 1; i <= N; i++) {
		int a;
		cin >> a;
		num.push_back(a);
	}
	sort(num.begin(), num.end());
	int GCD = num[1] - num[0];
	for (int i = 0; i < num.size() - 1; i++) {
		GCD = gcd(GCD, num[i + 1] - num[i]);
	}
	vector<int>result;
	result.push_back(GCD);
	for (int i = 2; i * i <= GCD; i++) {
		if (GCD % i == 0) {
			result.push_back(i);
			result.push_back(GCD / i);
		}
	}
	sort(result.begin(),result.end());
	result.erase(unique(result.begin(), result.end()), result.end());
	for (int i = 0; i < result.size(); i++) {
		cout << result[i] << '\n';
	}
}

'백준 문제풀이' 카테고리의 다른 글

[17214번]다항 함수의 적분  (0) 2023.09.06
[16496번]큰 수 만들기  (0) 2023.09.06
[7869번]두 원  (0) 2023.09.05
[2447번]별 찍기-10  (0) 2023.09.03
[2225번]합분해  (0) 2023.09.02