Algorithm
[백준 1037] 약수
Mirab
2021. 11. 9. 00:04
문제 풀이
재밌는 문제다.
1과 N을 제외한 진짜 약수가 모두 주어졌을 때, N을 구하는 문제.
12의 약수를 생각해보자.
{1, 2, 3, 4, 6, 12}
문제에서 1과 N을 제외한 진짜 약수가 주어진다고 하면 아마 다음과 같을 것이다.
{2, 3, 4, 6}
위의 수열은 섞여있을 수도 있다. 그렇지만 진짜 약수들만 주어지므로 요소는 똑같다.
어떻게 N을 찾을 수 있을까?
간단하다.
가장 작은 수랑 가장 큰 수를 곱하면 그것이 즉 N이다.
2 x 6 = 12 (우리가 구하려고 하는 N이다)
따라서 수열이 주어지면 가장 작은 수랑 큰 수를 곱하면 답이다.
소스 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) cin >> v[i];
int a = *min_element(v.begin(), v.end());
int b = *max_element(v.begin(), v.end());
cout << a * b << endl;
return 0;
}