[BOJ] 1037

약수

1037번 https://www.acmicpc.net/problem/1037

분류

  • Silver 5

  • 수학
  • 정수론

해법

가장 작은 약수와 가장 큰 약수의 곱이 그 약수를 갖는 수라는 사실을 이용하면 됩니다.

정답 코드

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

int main(void)
{
    int n;
    scanf(" %d", &n);
    vector<int> divisors;
    for (int i = 0; i < n; i++)
    {
        int divisor;
        scanf(" %d", &divisor);
        divisors.push_back(divisor);
    }
    sort(divisors.begin(), divisors.end()); // sort by ascending order
    printf("%d", divisors[0] * divisors[n - 1]); // number N is smallest real divisor * biggest real divisor
    return 0;
}

Updated:

Leave a comment