No Rules Rules

검문 (feat. 백준, 2981번) 본문

생활/코테

검문 (feat. 백준, 2981번)

개발하는 완두콩 2022. 8. 4. 20:07
728x90
반응형

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

 

2981번: 검문

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

www.acmicpc.net

반응형
// woohyeon.kim
// https://www.acmicpc.net/problem/2981
#include <iostream>
#include <set>
#include <cmath>
using namespace std;
inline int gcd(register int a, register int b) {
	return a % b ? gcd(b, a % b) : b;
}
int main() {
	ios::sync_with_stdio(false), cin.tie(NULL);
	register int N, M, arr[100] = { 0 };
	set<int> ans;
	cin >> N;
	for (register int i = 0; i < N; ++i)
		cin >> arr[i];
	M = abs(arr[1] - arr[0]);
	for (register int i = 2; i < N; ++i)
		M = gcd(M, abs(arr[i] - arr[i - 1]));
	for (register int i = 1; i * i <= M; ++i)
		if (M % i == 0) {
			ans.insert(i);
			if (i != M / i)
				ans.insert(M / i);
		}
	for (auto& a : ans)
		if (a != 1)
			cout << a << " ";
	return 0;
}
// *&)*@*

여러 반례들을 보고 풀었습니다. 난이도만큼 어려운 문제입니다.

728x90
반응형
Comments