来自 NOIP2010 普及组 第一题
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出现了1次,在数20中出现了1次,在数21中出现了1次,在数22中出现了2次,所以数字2在该范围内一共出现了6次。
输入共一行,为两个正整数L和R,之间用一个空格隔开。
输出共1行,表示数字2出现的次数。
2 22
6
2 100
20
1s
【数据范围】 1≤L≤R≤10000 ====很简单哦!====
分析:开始用了一个while()计算,出了点差错,后来发现只需要用几个if语句判断一下就好了,复杂度为O(r-l)=O(n)
下面给出AC代码:
1 #include <bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5 int l,r,ans=0;
6 cin>>l>>r;
7 for(int i=l;i<=r;i++)
8 {
9 if((i/1)%10==2)
10 ans++;
11 if((i/10)%10==2)
12 ans++;
13 if((i/100)%10==2)
14 ans++;
15 if((i/1000)%10==2)
16 ans++;
17 if((i/10000)%10==2)
18 ans++;
19 }
20 cout<<ans<<endl;
21 return 0;
22 }