[BOJ] 백준_1037번_약수 / C, C++백준 알고리즘2021. 9. 16. 10:13
목차
문제 출처
https://www.acmicpc.net/problem/1037
문제
양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.
출력
첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.
코드
//[BOJ] 1037번_약수
#include <iostream>
using namespace std;
int main()
{
int N;
int min=0, max=0;
int val=0;
cin >> N;
int* A = new int[N];
if(N>50) {
cout << "N은 50보다 작거나 같아야 합니다." << endl;
exit(1);
}
for (int i = 0; i < N; i++)
{
cin >> A[i];
if ((A[i]<2)||(A[i]>1000000)) {
cout << "진짜 약수는 2보다 크거나 같고 1000000보다 작거나 같아야 합니다." << endl;
exit(1);
}
}
min = A[0];
max = A[0];
for (int i = 0; i < N; i++)
{
if (A[i] > max)
max = A[i];
if (A[i] < min)
min = A[i];
}
val = min * max;
cout << val << endl;
return 0;
}
정수 N을 입력받고 크기가 N인 정수형 배열 A를 생성한다. N번 반복하여 진짜 약수를 입력받아 차례로 배열의 원소로 저장한다. 원소들 중 min, max에 A[0]를 저장하고 if문 조건에 따라 최솟값이 min, 최댓값이 max가 되도록 저장한다. 진짜 약수들 중 최솟값과 최댓값을 곱하면 해당 수 N을 구할 수 있다.
728x90
반응형
LIST
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_1008번_A/B_C/C++ (0) | 2021.09.18 |
---|---|
[BOJ] 백준_17427번_약수의 합 2_C/C++ (0) | 2021.09.17 |
[BOJ] 백준_1748번_수 이어 쓰기1 / C언어, C++ (0) | 2021.09.15 |
[BOJ] 백준_1476번_날짜 계산 / C++ (0) | 2021.09.14 |
[BOJ] 백준_2309번_일곱 난쟁이 / C++ (0) | 2021.09.13 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!