整数中1出现的次数
整数中1出现的次数
问题陈述
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。
例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。
示例:
1 | 输入:n = 12 |
问题解法
将从各位至最高位出现1的次数累加即可得到。
记当前位为cur,cur的左边所有位记为高位high;cur的右边所有位记为低位low;记为位因子digit。
某位中出现1的次数计算方法
-
当cur=0时,此位1的个数计算公式为:high×digit。
-
当cur=1时,此位1的个数计算公式为:high×digit+low+1。
-
当cur=2,3,4,5,6,7,8,9时,此位1的个数计算公式为:(high+1)×digit。
变量递推
1 | while high != 0 or cur != 0 //当 high 和 cur 同时为 0 时,说明已经越过最高位,因此跳出 |
代码实现
1 | class CountOne{ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 淋竹调!
评论