数字统计
背景
来自 NOIP2010 普及组
第一题
描述
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出现了1次,在数20中出现了1次,在数21中出现了1次,在数22中出现了2次,所以数字2在该范围内一共出现了6次。
格式
输入格式
输入共一行,为两个正整数L和R,之间用一个空格隔开。
输出格式
输出共1行,表示数字2出现的次数。
样例1
样例输入1
2 22
样例输出1
6
样例2
样例输入2
2 100
样例输出2
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 }