题目描述
请统计某个给定范围 $\[L,R\]$ 的所有整数中,数字 $2$ 出现的次数。
比如给定范围 $\[2,22\]$,数字 $2$ 在数 $2$ 中出现了 $1$ 次,在数 $12$ 中出现 $1$ 次,在数 $20$ 中出现 $1$ 次,在数 $21$ 中出现 $1$ 次,在数 $22$ 中出现 $2$ 次,所以数字 $2$ 在该范围内一共出现了 $6$ 次。
输入格式
输入共 $1$ 行,为两个正整数 $L$ 和 $R$,之间用一个空格隔开。
输出格式
输出共 $1$ 行,表示数字 $2$ 出现的次数。
数据范围
$1 \\le L \\le R \\le 10000$
输入样例:
2 22
输出样例:
6
算法
(暴力枚举) $O(nlogn)$
每一个数枚举每一位,就可以AC
时间复杂度
每一个数枚举每一位,$O(nlogn)$
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int f(int x)//求x中2的个数
{
int res=0;
while(x>0)
{
if(x%10==2) res++;//如果这一位是2,答案+1
x/=10;//把这一位去掉
}
return res;//一定要返回答案
}
int ans;
int main()
{
int a,b;
scanf("%d%d",&a,&b);//输入
for(int i=a;i<=b;i++) ans+=f(i);//循环计算答案
cout<<ans;//输出
}