๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€

#2981

by flowing1ife 2023. 3. 17.
  • ๋ฌธ์ œ

ํŠธ๋Ÿญ์„ ํƒ€๊ณ  ์ด๋™ํ•˜๋˜ ์ƒ๊ทผ์ด๋Š” ๊ฒฝ์ฐฐ์˜ ๊ฒ€๋ฌธ์„ ๋ฐ›๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ฒฝ์ฐฐ์€ ์ƒ๊ทผ์ด๊ฐ€ ์šด๋ฐ˜ํ•˜๋˜ ํ™”๋ฌผ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ชจ๋‘ ํ™•์ธํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ฒ€๋ฌธํ•˜๋Š”๋ฐ ์—„์ฒญ๋‚˜๊ฒŒ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.

์ƒ๊ทผ์ด๋Š” ์‹œ๊ฐ„์„ ๋•Œ์šฐ๊ธฐ ์œ„ํ•ด์„œ ์ˆ˜ํ•™ ๊ฒŒ์ž„์„ ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๋จผ์ € ๊ทผ์ฒ˜์— ๋ณด์ด๋Š” ์ˆซ์ž N๊ฐœ๋ฅผ ์ข…์ด์— ์ ๋Š”๋‹ค. ๊ทธ ๋‹ค์Œ, ์ข…์ด์— ์ ์€ ์ˆ˜๋ฅผ M์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, ๋‚˜๋จธ์ง€๊ฐ€ ๋ชจ๋‘ ๊ฐ™๊ฒŒ ๋˜๋Š” M์„ ๋ชจ๋‘ ์ฐพ์œผ๋ ค๊ณ  ํ•œ๋‹ค. M์€ 1๋ณด๋‹ค ์ปค์•ผ ํ•œ๋‹ค.

N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€๋Šฅํ•œ M์„ ๋ชจ๋‘ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  • ์ฝ”๋“œ
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

//์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
int gcdIter(int a, int b) {
	while (b) {
		a %= b;
		swap(a, b);
	}
	return a;
}


set<int> cal(vector<int>& v, int n) {
	int num; // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•  ๊ธฐ์ค€ ์ˆ˜
	set<int> s; //๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•  ์…‹

	//์ด์›ƒํ•œ ์ˆ˜๋“ค๊ฐ„์˜ ์ฐจ๋ผ๋ฆฌ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
	num = v[1] - v[0];

	for (int i = 2; i < n; i++) {
		num = gcdIter(num, v[i] - v[i - 1]);
	}

	//์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์˜ ์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
	for (int i = 2; i*i <= num; i++) { //์‹œ๊ฐ„ ์ดˆ๊ณผ ํ•ด๊ฒฐ 
		if (num % i == 0) {
			s.insert(i);
			s.insert(num/i);
		}
	}
	s.insert(num); //์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๊นŒ์ง€ ๋„ฃ๊ธฐ 
	
	return s;
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n, m;
	set<int> result; //๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ์…‹

	//์ž…๋ ฅ 
	cin >> n;

	vector<int> v;

	for (int i = 0; i < n; i++) {
		cin >> m;
		v.push_back(m);
	}

	//์—ฐ์‚ฐ
	//์ฐจ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ ฌ
	sort(v.begin(), v.end());
	result = cal(v, n);

	//์ถœ๋ ฅ
	for (auto iter : result) {
		cout << iter << " ";
	}
	
	return 0;
}
  • ํ•ด์„ค

1. gcdIter ํ•จ์ˆ˜

- ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

 

2. cal ํ•จ์ˆ˜

- ๋‚˜๋จธ์ง€๊ฐ€ ๋ชจ๋‘ ๊ฐ™๊ฒŒ๋˜๋Š” m ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜

: ์ด์›ƒํ•œ ์ˆ˜๋“ค๊ฐ„์˜ ์ฐจ๋ผ๋ฆฌ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•œ ํ›„ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด m์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ

: gcdIterํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ณ„์†ํ•ด์„œ ์ด์›ƒํ•œ ์ˆ˜๋“ค๊ฐ„์˜ ์ฐจ๋ผ๋ฆฌ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•จ

: ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์˜ ์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ i์™€ num/i๋ฅผ ํ•œ ๋ฒˆ์— insertํ•˜์—ฌ i*i <=num๊นŒ์ง€๋งŒ ์—ฐ์‚ฐ์„ ํ•˜๋„๋ก ํ•จ

: ๋งˆ์ง€๋ง‰ ๋ณธ์ธ๊นŒ์ง€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์— ๋„ฃ์€ ํ›„ set๋ฅผ ๋ฐ˜ํ™˜

 

3. main ํ•จ์ˆ˜

: ๋ชจ๋‘ ์ž…๋ ฅ ๋ฐ›์•„ ๋ฒกํ„ฐ์— ์ €์žฅํ•œ ํ›„, ๊ณ„์‚ฐํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ •๋ ฌํ•œ ๋’ค calํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์—ฐ์‚ฐ

'์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป > ๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

#1065  (0) 2023.03.21
#9421  (1) 2023.03.17
#6588  (1) 2023.03.17
#2840  (0) 2023.03.17
#1735  (0) 2023.03.17