题目描述
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
补充说明 3141592
固定百位为1,则
100~199,百位后面的数字从0到99,百位数字的1一共出现了100次;
如果是100~999,百位数字上的1依然出现了100次
如果是100~192,则百位数字上的1一共出现了93次;
所以,对于任意的三位数num(默认最高位不为0),只要num>=199,则百位数字上面的1出现了100次
同理,固定千位数1,则
对于任意的四位数num(默认最高位不为0),只要num>=1999,则千位数字上的1出现了1000次 (1000~1999)
解题思路:
参考 :