【题目描述】
请统计某个给定范围[L, R]的所有整数中,数字2 出现的次数。
比如给定范围[2, 22],数字2 在数2 中出现了1 次,在数12 中出现1 次,在数20 中出现1 次,在数21 中出现1 次,在数22 中出现2 次,所以数字2 在该范围内一共出现了6次。
【输入】
共1 行,为两个正整数L 和R,之间用一个空格隔开。
【输出】
共1 行,表示数字2 出现的次数。
【输入样例】
2 22
【输出样例】
6
【提示】
【输入输出样例2】
输入:
2 100
输出:
20
【数据范围】
1 ≤ L ≤ R≤ 10000。
【解题思路】
逐个检查(暴力方法)
对于每个整数,检查其每一位是否为2。这种方法简单直观,但可能在数字范围较大时效率不高。
- 遍历范围内所有数字:从L遍历到R,对每个数字进行检查。
- 检查每一位数字:对于每个数字,通过循环检查其每一位是否为2。这可以通过不断地将数字除以10并检查余数是否为2来实现。
- 计数:每当发现一个2,就将计数器增加1。
- 总和:遍历完成后,计数器的值即为范围[L, R]内数字2出现的总次数。
【代码实现】
#include <iostream>
using namespace std;
int count2s(int n) {
int count = 0;
while (n > 0) {
if (n % 10 == 2) count++;
n /= 10;
}
return count;
}
int main() {
int L, R;
cin >> L >> R;
int total = 0;
for (int i = L; i <= R; ++i) {
total += count2s(i);
}
cout << total << endl;
return 0;
}