본문 바로가기
Programming/BOJ

백준 #1037 약수

by 작은별하나 2019. 12. 26.
반응형

C/C++ 언어 초반에 연습문제로 자주 나오는 것이 약수 구하기와 소수 구하기네요.  약수는 나머지 연산자 %의 용법만 잘 알면 손쉽게 구할 수 있습니다.

 

문제의 링크는 다음과 같습니다.

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

 

1037번: 약수

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

www.acmicpc.net

이번 문제는 어떤수 N에 대하여 1과 자기자신인 N을 제외한 약수들이 순서없이 나열되었을 때, 원래의 수를 알아내는 것입니다.  정석이라면 최소공배수를 찾아야 합니다.  그런데 그렇게 안 하고 더 간단하게 풀 수 있는 방법이 있습니다.  모든 약수들을 나열한다고 했으므로, 가장 작은 수와 가장 큰 수를 찾아서 서로 곱해주면 손쉽게 N을 구할 수 있습니다.

 

다음은 제가 짠 소스입니다.  소스는 참고용으로 봐주세요.

//----------------------------------------------------------------------------------------
//  baekjoon #1037 - Divisors
//    - by Aubrey Choi
//    - created at 2019-07-03
//----------------------------------------------------------------------------------------
#include <stdio.h>

int main()
{
  int n, s;
  long long min, max;
  scanf("%d%d",&n,&s);
  min = max = s;
  while(--n)
  {
    scanf("%d", &s);
    if(s < min) min = s;
    if(s > max) max = s;
  }
  printf("%lld\n", min*max);
}
728x90

'Programming > BOJ' 카테고리의 다른 글

#1041 주사위(simple Implement)  (0) 2019.12.28
백준 #1038 감소하는 수  (2) 2019.12.27
백준 #1036 36진수  (0) 2019.12.26
백준 #1032 명령 프롬프트  (0) 2019.12.25
백준 #1026 보물  (0) 2019.12.25

댓글