题目
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。
例如,输入12,那么1~12这些整数中包含1 的数字有1、10、11和12。可得1一共出现了5次。
思路
将个位、十位……每位1出现的次数加起来就是1一共出现的次数。
以12为例,个位上1出现了 2
次分别是 01,11(暂时不看11的十位)。
十位上1出现了 3
次,分别是10,11,12。
因此1~12中1一共出现了 2+3=5
次。
两位数不好找规律,我们以四位数为例。一个四位数十位上 1 出现的次数,与十位上的值有关。根据值不同,可分为三种情况,值为0,1,2~9:
我们通过三个不同四位数进行探讨,分别是 2304
, 2314
和 2324
:
我们将数字划分为三部分,当前位(cur),高位