문제링크: https://www.acmicpc.net/problem/1037
양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.
첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.
첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::ios::sync_with_stdio(false);
std::cout.tie(NULL);
std::cin.tie(NULL);
int num; std::cin >> num;
std::vector<int> v(num);
for (int i = 0; i < num; i++) {
std::cin >> v[i];
}
std::sort(v.begin(), v.end());
std::cout << v[0] * v[v.size() - 1] << "\n";
return 0;
}
정렬
결국 약수가 주어진다면 원래의 수 N은 정렬 후 처음 값과 마지막 값을 곱한 것이다.
쉬워 보이는 문제는 과감히 풀어야한다.
분석하다가 시간 다 버린다.