题目描述:
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。 比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
输入描述:
输入共1行,为两个正整数L和R,之间用一个空格隔开。
输出描述:
输出共1行,表示数字2出现的次数。
补充说明:
1≤L≤R≤10000。
示例:
示例1: 输入:2 22 输出:6
示例2: 输入:2 100 输出:20
解法:
枚举 + 数字拆分(除10,模10)
#include
using namespace std;
int main()
{
int left, right;
cin >> left >> right;
int count = 0;
for (int i = left; i <= right; ++i)
{
int x = i; // 防止i被修改
while (x)
{
if (x % 10 == 2)
{
count++;
}
x = x / 10;
}
}
cout << count << endl;
return 0;
}
其中 int x = i; 一定要加,不然 i 的值随着第一次while循环的结束就变成了0,再次经过第二次for循环时,i++就变成了 0++,变成了1
所以这句一定要加!!!
编译结果: