1. 1만 이하의 완전수는 4개 뿐이다.
2. 과잉수와 부족수를 구하면 된다.
3. 시간을 줄이려면 소수들을 구해서 뭔가 하면 될 것 같은데, 굳이 그럴 필요가 없다. (1 <= T < 1000)
4. 그래서 하나씩 다 구했다.
문제
어떠한 자연수 N에 대해서 N을 제외한 약수(진약수)의 합이 N이 되는 자연수를 완전수라고 한다. 예를 들어, 6의 약수는 1, 2, 3, 6인데 1+2+3은 6이기 때문에 완전수이다. 또 진약수의 합이 자기 자신보다 작은 경우를 부족수, 진약수의 합이 자기 자신보다 큰 경우를 과잉수라고 한다.
이 때, 어떤 수가 주어질 때 이 수가 완전수인지, 부족수인지, 과잉수인지를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 자연수의 개수 T가 주어진다. T은 1000보다 작은 수이다.
둘째 줄에는 공백을 사이에 두고 완전수인지 구해야 되는 자연수 N이 주어진다.(N<10000)
출력
T개 줄에 걸쳐서 각 자연수에 대해서 완전수면 ‘Perfect’, 부족수면 ‘Deficient’, 과잉수면 ‘Abundant’를 출력한다.
예제 입력 1
3 28 21 36
예제 출력 1
Perfect Deficient Abundant
힌트
28의 경우 약수가 1, 2, 4, 7, 14, 28 이고, 1+2+4+7+14=28이기 때문에 완전수이다.
21의 경우 약수가 1, 3, 7, 21 이고, 1+3+7=11<21이기 때문에 부족수이다.
36의 경우 약수가 1, 2, 3, 4, 6, 9, 12, 18, 36 이고, 1+2+3+4+6+9+12+18=55>36이기 때문에 과잉수 이다.
출처
University > 중앙대학교 > CodeRace 2017 C번
'IT > 알고리즘' 카테고리의 다른 글
BOJ 백준온라인져지 10820 문자열 분석 풀이 (0) | 2018.05.21 |
---|---|
BOJ 백준온라인져지 12785 토쟁이의 등굣길 풀이 (0) | 2018.05.21 |
BOJ 백준온라인져지 5533 유니크 풀이 (0) | 2018.05.18 |
BOJ 백준온라인져지 3184 양 풀이 (0) | 2018.05.17 |
BOJ 백준온라인져지 3020 개똥벌레 풀이 (0) | 2018.05.17 |