백준 c++

백준 1037 c++ 약수

현구구 2024. 1. 23. 10:36

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

 

1037번: 약수

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

www.acmicpc.net


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

void sortArr(vector<long long> &inputarr)
{
	for (int i = 0; i < inputarr.size(); i++)
	{
		for (int j = 1; j < inputarr.size(); j++)
		{
			if (inputarr[j - 1] > inputarr[j]) //앞이 뒤보다 크다면
			{
				int temp = 0;//임시
				temp = inputarr[j - 1];
				inputarr[j - 1] = inputarr[j];
				inputarr[j] = temp;
			}
		}
	}
}

int main()
{
	int n = 0; //약수의 개수
	cin >> n;
	vector<long long> arr(n, 0);
	//배열 입력 받기
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}

	int ans; //정답
	//약수가 하나만 있을 경우
	if (n == 1)
	{
		ans = arr[0] * arr[0];
	}
	else //정렬 해야함
	{
		sortArr(arr);
		ans = arr[0] * arr[n - 1];
	}
	cout << ans;
}

 

배열을 정렬 후 약수 중 (가장 작은 수 * 가장 큰 수) = N이다.

'백준 c++' 카테고리의 다른 글

백준 2609 c++ 최대공약수와 최소공배수  (0) 2024.01.25
백준 17425 c++ 약수의 합  (0) 2024.01.25
백준 16926 c++ 배열 돌리기 1  (0) 2024.01.23
백준 4375 c++ 1  (1) 2024.01.22
백준 2904 c++ 수학은 너무 쉬워  (0) 2023.03.09