아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

0부터 n까지의 자릿수 합

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

요약
0부터 n까지의 모든 수를 십진수로 적었을 때 나타나는 각 자릿수의 합을 구한다. n은 10^16까지 커질 수 있다.
난이도

보통10점 중 6점

유형
수학, 구현, 동적 계획법
정답자
아직 제출이 없습니다

문제

0부터 nn까지의 수를 모두 더한 값은 n(n+1)/2n(n+1)/2로 간단히 구한다. 즉 0+1+2+⋯+n=n(n+1)/20 + 1 + 2 + \cdots + n = n(n+1)/2이다.

이 문제는 조금 더 어렵다. 수열 [0,1,…,n][0, 1, \ldots, n]에 나오는 모든 자릿수의 합은 얼마인가?

0부터 nn까지 세면서 등장하는 자릿수를 전부 더한 값을 구하는 프로그램을 작성하라.

n=15n = 15이면 수열 [0,1,2,…,14,15][0, 1, 2, \ldots, 14, 15]에 나오는 자릿수를 모두 더한다. 그 합은 1+2+3+4+5+6+7+8+9+1+0+1+1+1+2+1+3+1+4+1+5=661 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 + 1 + 1 + 1 + 2 + 1 + 3 + 1 + 4 + 1 + 5 = 66이다.

입력

첫째 줄에 정수 nn이 주어진다. (1≤n≤10161 \le n \le 10^{16})

출력

첫째 줄에 수열 [0,1,…,n−1,n][0, 1, \ldots, n-1, n]에 나오는 자릿수의 합을 출력한다.

예제4

  1. 예제 1

    입력
    15
    
    예상 출력
    66
    
  2. 예제 2

    입력
    9935125239801570
    
    예상 출력
    714619374344308434
    
  3. 예제 3

    입력
    1000
    
    예상 출력
    13501
    
  4. 예제 4

    입력
    83
    
    예상 출력
    678