본문으로 바로가기
문제

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

 

1037번: 약수

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되

www.acmicpc.net

소스코드
#include <iostream>
#include <bits/stdc++.h>
using namespace std; 
int arr[51];
int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    sort(arr, arr+n);
    int ans = arr[0] * arr[n - 1];
    cout << ans;
    
}
풀이

24의 약수

1,2,3,4, 6, 8,12,24

문제에서 1과 N은 뺀 나머지가 진짜 약수라고 명시하였다.

즉 약수는 2가 24의 약수이면 나눈 몫도 24의 약수여야 한다.

즉 2,12는 24의 약수이다.

따라서 최솟값과 최댓값을 곱한게 N을 구한것이다.