[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;
}
Leave a comment