题目链接:https://ac.nowcoder.com/acm/contest/19859/A
题目来源:牛客网
题目描述
请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
输入描述:
输入共1行,为两个正整数L和R,之间用一个空格隔开。
输出描述:
输出共1行,表示数字2出现的次数。示例1
输入
复制2 22
输出
复制6示例2
输入
复制2 100
输出
复制20
备注:
1≤L≤R≤10000。
solution:
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 6 int fig2(int pre){ 7 8 int a,ans=0; 9 10 while(pre){ 11 12 if( pre%10==2) 13 {ans++;} 14 pre=pre/10; 15 16 17 } 18 return ans; 19 20 21 } 22 23 24 int main(){ 25 26 int count=0; 27 int lo,hi; 28 cin>>lo>>hi; 29 for(int i=lo;i<=hi;i++){ 30 31 count+=fig2(i); 32 33 34 } 35 cout<<count<<endl; 36 return 0; 37 38 }
算法描述:对每个待检元素【lo,hi】做一次扫描,每个数经过函数处理返回该数中含2的个数,利用计数器记下所有待处理元素的函数处理返回值总和即得到最终答案。函数则是依次检测该数各数位上的数,若等于2则函数内置计数器加一,最终返回该数中含有2的个数。
函数总结:可以改成一个更实用的函数,检查任意数字在目标数中出现的次数;利用迭代检查各数位(优于递归)。
标签:pre,20,函数,22,int,lo,C++,1A,算法 From: https://www.cnblogs.com/walter-mitty/p/17052454.html