만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

진약수의 합

면접 대비

시간 제한8초메모리 제한1024 MB

요약
최대 백만 개의 수 각각에 대해 진약수의 합을 구하고, 그 수가 과잉수인지 부족수인지 완전수인지 판별한다.
난이도

쉬움10점 중 3점

유형
수학, 정수론, 구현, 누적 합
정답자
아직 제출이 없습니다

문제

양의 정수 nn의 약수란 m=ndm = \frac{n}{d}가 정수가 되는 정수 dd를 말한다. 이 문제에서 양의 정수 nn의 진약수의 합 s(n)s(n)을 nn 자신을 제외한 nn의 모든 약수의 합으로 정의한다. 예를 들어 s(12)=1+2+3+4+6=16s(12) = 1 + 2 + 3 + 4 + 6 = 16, s(21)=1+3+7=11s(21) = 1 + 3 + 7 = 11, s(28)=1+2+4+7+14=28s(28) = 1 + 2 + 4 + 7 + 14 = 28이다.

진약수의 합을 이용하면 양의 정수를 과잉수, 부족수, 완전수 세 가지로 분류할 수 있다. 규칙은 다음과 같다.

  1. 양의 정수 xx는 s(x)>xs(x) > x이면 과잉수이다.
  2. 양의 정수 yy는 s(y)<ys(y) < y이면 부족수이다.
  3. 양의 정수 zz는 s(z)=zs(z) = z이면 완전수이다.

양의 정수 목록이 주어진다. 이들을 분류하는 프로그램을 작성하시오.

입력

입력의 첫째 줄에는 테스트 케이스의 수를 나타내는 양의 정수 TT가 주어진다. 입력의 둘째 줄에는 TT개의 양의 정수 n1,…,nTn_1, \dots, n_T가 공백으로 구분되어 주어진다.

출력

TT개의 줄을 출력한다. nin_i가 과잉수이면 ii번째 줄에 abundant를 출력한다. nin_i가 부족수이면 ii번째 줄에 deficient를 출력한다. nin_i가 완전수이면 ii번째 줄에 perfect를 출력한다.

제한

  • 1≤T≤1061 \le T \le 10^6
  • 1≤ni≤1061 \le n_i \le 10^6 for i∈{1,2,…,T}i \in \{1, 2, \dots, T\}.

예제1

  1. 예제 1

    입력
    3
    12 21 28
    
    예상 출력
    abundant
    deficient
    perfect