알고리즘 문제/백준
[백준 알고리즘] 1037번 약수
에르주
2020. 8. 1. 13:19
반응형
https://www.acmicpc.net/problem/1037
1037번: 약수
첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되�
www.acmicpc.net
입력
첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.
출력
첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.
풀이
쉬운 문제로써 해당 1과 N이 아닌 약수들의 집합 중
최솟값과 최댓값을 곱한 숫자가 N이다
예를 들어
8 -> (1, 2, 4 ,8)
12 -> (1,2, 3, 4, 6. 12)
24 -> (1, 2, 3, 4, 6, 8, 12, 24)
....
입력에서 N은 2보다 크다고 했으므로 추가 조건(특이 케이스 N이 1일 때)을 고려하지 않았다.
include<stdio.h>
#include<math.h>
using namespace std;
int main() {
int Num=0;
int min=1000000;
int max=0;
int NumArray[50];
scanf("%d", &Num);
int result = 0;
for (int i = 0; i < Num; i++) {
int temp = 0;
scanf("%d", &temp);
if (max < temp) {
max = temp;
}
if (min > temp) {
min = temp;
}
}
//printf("max: %d, min : %d\n", max, min);
result = max * min;
// 2 (1,2)
// 4 (1,2,4)
// 6 (1,2,3,6)
// 8 (1,2,4,8)
// 9 (1,3,9)
// 10(1,2,5,10)
// 12(1,2,3,6,12)
// 14(1,2,7,14)
// 15(1,3,5,15)
// 16(1,2,4,8,16)
// 18(1,2,3,9,18)
// 20(1,2,4,5,10,20)
// 21(1,3,7,21)
// 22(1,2,11,22)
// 24(1,2,3,4,6,8,12,24)
// 25(1,5,25)
// 26(1,2,13,26)
// 27(1,3,9,27)
// 28(1,2,4,7,14,28)
// 30(1,3,10,30)
// 32(1,2,4,8,16,32)
// 33(1,3,11,33)
// 34(1,2,17,34)
// 35(1,5,7,35)
// 36(1,2,3,4,6,9,12,18,36)
// 38(1,2,19,38)
// 39(1,3,13,39)
// 40(1,2,4,5,8,20,40)
printf("%d\n", result);
}
반응형