Link https://www.acmicpc.net/problem/1037
소스결과 1988 KB / 0 ms
출처 Baekjoon
언어 C++ 17
분류 수학
설명
N의 n개 진짜 약수가 주어질 때 N을 구하는 프로그램을 만들자
N의 약수중 1과 N이 아닌 약수를 진짜 약수라고 한다.
n이 홀수 일 떄와 짝수일 때가 있는데 홀수일 경우는 N이 제곱수이다.
N을 구하기 위해서는 최대 값과 최소 값만 알면 상관이 없지만, 이번 문제에서는 정렬을 이용해 최대/최소 값을 구하거나 중앙값을 구하는 방법을 사용했다.
알고리즘
1. n개의 수를 입력 받는다.
2. n개의 수를 오름차순으로 정렬한다.
3. n이 홀수인 경우 중앙값을 제곱해 출력하고, 짝수인 경우 최대값과 최소값을 곱해 출력한다.
소스결과
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const short MAX = 50;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int count;
int res = 0;
vector<int> childList;
cin >> count;
childList.resize(count);
for (int i = 0; i < count; i++)
cin >> childList[i];
sort(childList.begin(), childList.end());
if (count % 2)
res = childList[count / 2] * childList[count / 2];
else
res = childList[0] * childList[count-1];
cout << res;
return 0;
}
'Algorithm > Mathematics' 카테고리의 다른 글
Baekjoon 1977 완전제곱수 (0) | 2019.04.01 |
---|---|
Baekjoon 1212 8진수 2진수 (0) | 2019.03.31 |
Baekjoon 16563 어려운 소인수분해 (0) | 2019.03.31 |
Baekjoon 13458 시험감독 (0) | 2019.03.08 |
BaekJoon 1356 유진수 (0) | 2019.01.29 |