题意:给定两个数字,统计出
之间的所有数字中,数字
分别出现了多少次?
题解:方法很多,本题细节很多,但只要思路清晰,没有算重或者算漏就行了。
个人的方法:
计算出小于等于的答案,再计算出小于等于
的答案,两者相减就行了。
如何计算小于等于的答案?
我假设求解数字5023的解,
从最高位开始,假设最高位填0,那么剩余3位可以任意填,但是前导0不能计算在结果内,所以数字0出现的次数,就是小于等于999的所有数字中0出现的次数(我们可以预处理出这个结果),而数字1到9出现的次数就是
假设最高位填1,则在剩余的3位中,每个数字任意填,那么每个数字出现的次数就是,最高位的数字1则会出现在
个数字中
假设最高位填2到4同理
最高位填5,这时最高位为5的数字,容易计算出有5023-5000+1个。
接下来我们来计算,最高位为5时,剩余的3位出现的次数。
我们其实就是要求解数字