N의 진짜 약수(자기 자신이랑 1을 제외한 약수)들이 주어질 때 N을 구하는 문제.
처음에는 진짜 약수들의 최소공배수를 구하는 것이라 착각했으나 2 4를 입력하는 경우 답이 4가 나오기 때문에 틀리다는 것을 알았다.
모든 약수는(제곱수 제외) pair를 갖고 자기와 pair를 곱하면 원래의 수를 구할 수 있기 때문에, 약수들을 sort한 다음 가장 작은 약수와 가장 큰 약수를 곱해주면 된다.
2 8 4가 주어진 경우에는 2 4 8로 sort해 2랑 8을 곱해 16을, 6 4 3 2가 주어진 경우에는 2 3 4 6로 sort해 2과 6을 곱해 12를 2가 주어진 경우에는 2와 2를 곱해 4를 얻는다.
#include <iostream>
#include <vector>
#include <algorithm> // sort
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int num, i, tmp;
cin >> num;
vector<int> divisor;
for (i = 0; i < num; i++) {
cin >> tmp;
divisor.push_back(tmp);
}
sort(divisor.begin(), divisor.end());
int size = divisor.size();
cout << divisor[0] * divisor[size - 1] << endl;
return 0;
}