The sum of the digits 1 through 9 is 45.
This set appears 201 times in the units position, between 1 and 2009 inclusive, contributing 201*45=9045 to the total. A single 1 through 4 each, then adds a total of 10 more to the contributions made by the units position, making 9055 the overall contribution of the units position.
The 1 through 9 set appears 200 times, from 10 through 1999, making 9000, and there are 5 more from the 1's in 2010 through 2014 that are in the 10's position, adding up to 9005 overall from the tens position.
The hundreds position contributes only the 9000 from the 200 occurrences in that position
The digit 1 occurs 1000 times in the thousands position and the digit 2 occurs 15 times, adding 30, making 1030 the total contribution of the thousands position.
9055
9005
9000
1030
----
28090 the answer.
And also of course as a check:
DefDbl A-Z
Dim crlf$, used(9), bypos(4)
Function mform$(x, t$)
a$ = Format$(x, t$)
If Len(a$) < Len(t$) Then a$ = Space$(Len(t$) - Len(a$)) & a$
mform$ = a$
End Function
Private Sub Form_Load()
Text1.Text = ""
crlf$ = Chr(13) + Chr(10)
Form1.Visible = True
DoEvents
For i = 1 To 2014
tot = tot + sod(i)
Next
Text1.Text = Str(tot) + crlf
For i = 0 To 3
Text1.Text = Text1.Text & Str(bypos(i))
Next
End Sub
Function sod(n)
s$ = LTrim(Str(n))
tot = 0
For i = 1 To Len(s$)
tot = tot + Val(Mid(s$, i, 1))
bypos(Len(s$) - i) = bypos(Len(s$) - i) + Val(Mid(s$, i, 1))
Next
sod = tot
End Function
finding
28090
9055 9005 9000 1030
showing first the total, and then categorized by position:
thousands, hundreds, tens, units.