N은 약수의 처음 주어진 숫자와 마지막 숫자를 곱해주면 나온다.
예를 들어 9가 N이면
3 이 약수로 있다.
그러면 3 * 3 = 9
20 이면
2 4 5 10
2 * 10 = 20
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <cstdio> | |
#include <vector> | |
/** | |
* https://www.acmicpc.net/problem/1037 | |
* BOJ 백준온라인져지 1037 약수 풀이 | |
*/ | |
using namespace std; | |
vector<int> divisor; | |
void quickSort(int l, int r){ | |
int i = 0, j = r; | |
int pivot = divisor[(l + r) / 2]; | |
do{ | |
while(divisor[i] < pivot) i++; | |
while(divisor[j] > pivot) j--; | |
if(i <= j){ | |
int temp = divisor[i]; | |
divisor[i] = divisor[j]; | |
divisor[j] = temp; | |
i++, j--; | |
} | |
}while(i <= j); | |
if(l < j) quickSort(l, j); | |
if(r > i) quickSort(i, r); | |
} | |
int main(){ | |
int N; | |
scanf("%d", &N); | |
while(N--){ | |
int temp; | |
scanf("%d", &temp); | |
divisor.push_back(temp); | |
} | |
quickSort(0, divisor.size()-1); | |
printf("%ld", (long) divisor[0] * (long) divisor[divisor.size()-1]); | |
} |
20 은 2 * 2 * 5 로 소인수 분해가 된다.
2 와 10
'IT > 알고리즘' 카테고리의 다른 글
BOJ 백준온라인져지 2490 윷놀이 풀이 (0) | 2017.12.05 |
---|---|
BOJ 백준온라인져지 10872 팩토리얼 풀이 (0) | 2017.12.05 |
BOJ 백준온라인져지 2163 초콜릿 자르기 풀이 (0) | 2017.12.05 |
BOJ 백준온라인져지 2293 동전 1 풀이 (0) | 2017.12.04 |
BOJ 백준온라인져지 2573 빙산 풀이 (0) | 2017.12.04 |