문제 링크


🔷 분류

수학, 정수론

✒️ 문제 설명

양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.

⬅️ 입력

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.

➡️ 출력

첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.

💻 코드 (C++)

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

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int num;
	cin >> num;
	
	vector<int> factor;
	
	for (int i = 0; i < num; i++) {
		int f;
		cin >> f;
		factor.push_back(f);
	}
	
	sort(factor.begin(), factor.end());
	
	if (factor.size() % 2 == 0) { // 짝수면
		cout << factor.front() * factor.back();
	} else { // 홀수면
		int mid = factor.size() / 2;
		cout << factor[mid] * factor[mid];
	}
	
	return 0;
}

글 이동

Comments