본문 바로가기
알고리즘 문제/백준

[백준 알고리즘] 1037번 약수

by 에르주 2020. 8. 1.
반응형

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);

}

 

반응형

댓글