[Bronze / 1037] 약수
🔷 분류
수학, 정수론
✒️ 문제 설명
양수 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;
}
공유하기
Twitter Facebook LinkedIn글 이동
Comments