题目来源
NOIP2010 Junior T1
FZYZOI P4682
题目描述
请统计某个给定范围
[
L
,
R
]
[L,R]
[L,R] 的所有整数中,数字
2
2
2 出现的次数。
比如给定范围
[
2
,
22
]
[2,22]
[2,22],数字
2
2
2 在数
2
2
2 中出现了
1
1
1 次,在数
12
12
12 中出现
1
1
1 次,在数
20
20
20 中出现
1
1
1 次,在数
21
21
21 中出现
1
1
1 次,在数
22
22
22 中出现
2
2
2 次,所以数字
2
2
2 在该范围内一共出现了
6
6
6 次。
输入格式
输入共 1 1 1 行,为两个正整数 L L L 和 R R R,之间用一个空格隔开。
输出格式
输出共 1 1 1 行,表示数字 2 2 2 出现的次数。
样例 1 输入
2 22
样例 1 输出
6
样例 2 输入
2 100
样例 2 输出
20
数据规模与约定
对于 40 % 40\% 40% 的数据, 1 ≤ L ≤ R ≤ 1000 1≤L≤R≤1000 1≤L≤R≤1000;
对于 100 % 100\% 100% 的数据, 1 ≤ L ≤ R ≤ 1 0 5 1≤L≤R≤10^5 1≤L≤R≤105。
题解
这种T1题没什么好说的 依照题面模拟就可以
枚举
l
l
l到
r
r
r之间所有数字 然后枚举某一位
时间复杂度
O
(
r
−
l
)
O(r-l)
O(r−l)
#include<cstdio>
int main(){
register int l,r,z=0;
scanf("%d%d",&l,&r);
for(;l<=r;l++){
if(l%10==2)z++;
if(l%100/10==2)z++;
if(l%1000/100==2)z++;
if(l%10000/1000==2)z++;
if(l%100000/10000==2)z++;
if(l%1000000/100000==2)z++;
}
return!printf("%d",z);
}