[NOIP2010 普及组] 数字统计
思路:求数字每一位的值时,可以通过(i % 10)得到最后一位,然后(i / 10)更新最后一位
题目描述
请统计某个给定范围 $[L, R]$ 的所有整数中,数字 $2$ 出现的次数。
比如给定范围 $[2, 22]$,数字 $2$ 在数 $2$ 中出现了 $1$ 次,在数 $12$ 中出现 $1$ 次,在数 $20$ 中出现 $1$ 次,在数 $21$ 中出现 $1$ 次,在数 $22$ 中出现 $2$ 次,所以数字 $2$ 在该范围内一共出现了 $6$ 次。
输入格式
$2$ 个正整数 $L$ 和 $R$,之间用一个空格隔开。
输出格式
数字 $2$ 出现的次数。
样例 #1
样例输入 #1
2 22
样例输出 #1
6
样例 #2
样例输入 #2
2 100
样例输出 #2
20
提示
$1 ≤ L ≤R≤ 100000$。
NOIP2010 普及组 第一题
#include<iostream>
#include<algorithm>
#include<stdio.h>
using namespace std;
int l, r;
int cnt;
int main()
{
cin >> l >> r;
for (int i = l; i <= r; i++)
{
if (i / 100000 == 2) cnt++;
if ((i % 100000) / 10000 == 2) cnt++;
if ((i % 10000) / 1000 == 2) cnt++;
if ((i % 1000) / 100 == 2) cnt++;
if ((i % 100) / 10 == 2) cnt++;
if ((i % 10) == 2) cnt++;
}
printf("%d", cnt);
return 0;
}