만드는 중입니다

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

행복한 수

시간 제한0.2초메모리 제한512 MB

요약
어떤 수의 십진수 각 자리 제곱합을 반복하다 1에 도달하는지 판정한다.
난이도

쉬움10점 중 3점

유형
시뮬레이션, 해시맵, 수학
정답자
아직 제출이 없습니다

문제

자연수 nn에 대해 함수 ff를 다음과 같이 정의한다.

f(n)f(n)은 nn을 십진법으로 적었을 때 각 자리 숫자를 제곱해서 모두 더한 값이다.

예를 들어 n=19n = 19이면 12+92=821^2 + 9^2 = 82이므로 f(19)=82f(19) = 82이다.

어떤 자연수는 ff를 반복해서 적용하면 언젠가 1이 된다. 이런 수를 행복한 수라고 한다. 19가 그렇다.

  • f(19)=12+92=82f(19) = 1^2 + 9^2 = 82
  • f(82)=82+22=68f(82) = 8^2 + 2^2 = 68
  • f(68)=62+82=100f(68) = 6^2 + 8^2 = 100
  • f(100)=12+02+02=1f(100) = 1^2 + 0^2 + 0^2 = 1

모든 자연수가 행복한 수는 아니다. 5로 직접 해 보면 5는 행복한 수가 아니라는 것을 알 수 있다. nn이 행복한 수가 아니면 ff를 반복 적용한 값은 반드시 다음 순환에 빠진다. 수학자가 이미 증명한 사실이다.

4→16→37→58→89→145→42→20→44 \to 16 \to 37 \to 58 \to 89 \to 145 \to 42 \to 20 \to 4

주어진 자연수 nn이 행복한 수인지 판정하는 프로그램을 작성하시오.

입력

표준 입력으로 한 줄이 주어진다. 그 줄에는 정수 nn (1≤n≤1,000,000,0001 \le n \le 1{,}000{,}000{,}000)이 하나 들어 있다.

출력

표준 출력으로 정확히 한 줄을 출력한다. nn이 행복한 수이면 HAPPY를, 그렇지 않으면 UNHAPPY를 출력한다.

예제2

  1. 예제 1

    입력
    19
    
    예상 출력
    HAPPY
    
  2. 예제 2

    입력
    5
    
    예상 출력
    UNHAPPY