삼삼한 수 2

시간 제한1초메모리 제한256 MB

요약
N을 서로 다른 3의 거듭제곱들의 합으로 나타낼 수 있는지 판정하고, 3의 거듭제곱을 최소 하나는 써야 한다는 조건 아래 YES 또는 NO를 출력한다.
난이도

쉬움10점 중 3점

유형
수학, 정수론, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

준하는 3의 거듭제곱인 수만 사용해 만들 수 있는 수를 보면 삼삼한 느낌을 받는다.

이 느낌을 정확히 설명하자면, 3의 거듭제곱인 수들을 겹치지 않고 한 번씩만 더해서 어떤 수 xx를 만들 수 있다면 그 수는 삼삼하다고 한다. 삼삼한 수에는 3의 거듭제곱인 수가 반드시 하나 이상 포함되어야 한다.

예를 들어, 109는 30+33+343^0+3^3+3^4로 나타낼 수 있으므로 삼삼한 수이다. 하지만 7과 18은 삼삼하지 않다.

준하는 삼삼한 수가 얼마나 더 있는지 알아보려고 한다.

입력

첫째 줄에 9,223,372,036,854,775,807보다 작거나 같은 음이 아닌 정수 NN이 입력된다.

출력

입력된 수가 삼삼하다면 YES, 그렇지 않다면 NO를 출력한다.

예제2

  1. 예제 1

    입력
    109
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    298
    
    예상 출력
    NO