신기한 수

면접 대비

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

요약
1부터 N까지의 정수 중 각 자리 숫자의 합으로 나누어지는 수의 개수를 센다.
난이도

쉬움10점 중 3점

유형
수학, 구현, 완전 탐색, 정수론
정답자
아직 제출이 없습니다

문제

수에 관심이 많은 민철이는 오늘도 노트에 연필로 수를 더하거나 빼거나 곱하거나 나누면서 시간을 보내고 있다. 그러다 18이 신기한 성질을 가진다는 것을 알아냈다. 18을 이루는 각 자릿수 1과 8을 합한 9는 18의 약수이다.

민철이는 18처럼 모든 자릿수의 합으로 나누어지는 수를 더 찾아냈다. 12와 21도 그러한 수였다. 민철이는 모든 자릿수의 합으로 나누어지는 수를 "신기한 수"라고 부르기로 했다. 더 큰 신기한 수도 찾아보았는데, 1729도 신기한 수였다. 1729는 1+7+2+9=19로 나누어진다.

민철이는 신기한 수가 얼마나 많은지 알고 싶어 한다. 주어진 자연수 N에 대해 N 이하인 신기한 수가 총 몇 개인지 궁금하다. 그러나 N 이하의 모든 수가 신기한 수인지 아닌지를 손으로 확인하기에는 시간이 너무 오래 걸린다.

여러분은 민철이를 도와줄 프로그램을 작성해야 한다. 1 이상인 자연수 N이 주어질 때 N 이하인 신기한 수의 개수를 출력하는 프로그램을 작성하시오.

입력

첫 번째 줄에 정수 N (1 ≤ N ≤ 10,000,000) 하나가 주어진다.

출력

N 이하인 신기한 수의 개수를 정수로 출력한다.

예제2

  1. 예제 1

    입력
    9
    
    예상 출력
    9
    
  2. 예제 2

    입력
    21
    
    예상 출력
    14