【問題研究】整数を1から順番に書いて◯が何回登場したか考える問題

こんにちは。TANUKIです。
今回とりあげるのはこんな問題です。
「1、2、3、……9、10、11……99、100、101……と順番に整数を書いていきます。」
(1) 1000まで書いたときに、3という数字は全部で何回書きましたか
(2) 2019まで書いたときに、1という数字は全部で何回書きましたか
(3) 150回目の3が含まれる整数はいくつですか
解答
000~999までの1000個の数を考える。
(実際には015は15と表記するため0の個数が変わってしまうが、0以外は変わらないので今回の問題では答は変わらない。同様に1000を000と表記しても3の個数は変わらない。)
この1000個の数はすべて3桁なので合わせて3000個の数字が存在する。
またこの3000個の数は各位が0~9までの10個の数が同じ回数ずつ登場する。
ゆえに3000÷10=300回
これをベースに考えていく
(2) 2019まで書いたときに1という数字は全部で何回書きましたか
解答
1000までに300+1 回(1000の分)
1999~2000までに300+999回(2000以外)
2001~2019まで
十の位に10回 一の位に2回
以上より
300+1+300+999+12=1612回
もっと面倒なパターン
(3)150回目の3が含まれる整数はいくつですか。
さきほどと同じように考えていく
解答
00~99までには100×20=200個の数字がある。200÷10=20で3は20個
100~199 20個
200~299 20個
300~399 20+100=120個
ここまでの合計が20×3+120=180なので300台に150個目の3が含まれることが分かる。
300~309
303 が2つ、それ以外は1つずつ含まれるので11個
329までで20×3+11×3=93個
330~339
百の位に10個、10の位に10個、1の位に1個で21個
339までで114個
349までで125個
359までで136個
369までで147個
370 371 372
※聞かれる整数が0の場合は
001~009まで18個、010~099まで90個
の合わせて108個の0を引く必要が出てくるので注意。