数字统计
题目: 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。 比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出 现了1次,在数20中出现了1次,在数21中出现了1次,在数22中 出现了2次,所以数字2在该范围内一共出现了6次。 输入格式: 输入共一行,为两个正整数L和R,之间用一个空格隔开。 输出格式: 输出共1行,表示数字2出现的次数。 样例输入1: 2 22 样例输出1: 6 样例输入2: 2 100 样例输出2: 20 限制 1s 【数据范围】 1≤L≤R≤10000
思路:
为什么以这一题举例呢?因为这一题很有代表性。在四则运算中 可以用 % 和 / 组合使用来检查一个数字的“每一位”。以 123 为例.
图一
每次先 % 10 求出末尾数字,然后将原数字 / 10,继续重复执行 这个过程,可以得到每一位的数字,直到最后一次 / 10 得到 0, 说明每一位的数字都已经求得了,可以退出这个过程。 你可以把这个过程想象成吃牛排,一开始牛排是一整块,每次你 切掉一小块,然后叉起来吃掉,又切掉一小块叉起来吃掉…直到 整块牛排都被你吃完了。 针对此题给出的范围内的所有数字,对每一个数字做如图所示的 判断即可。 拓展: 关于 % 和 / 的组合使用,这一题我们把每一位的数字都“拆下 来”检查了一番。另一类题目需要我们把每一位数字拆下来然后拼 成新的数字,这类题目的关键词是“回文数”, 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的 整数,比如 121 是回文数,但是 123 不是。想要判断一个数字是 不是回文数,可以按照规则求出对应的反向数字,判断二者是不 是相等就行了。如下图所示: