题目描述:
请统计某个给定范围[L,R][L, R][L,R]的所有整数中,数字 222 出现的次数。
比如给定范围[2,22][2, 22][2,22],数字2 22 在数 22 2中出现了 111 次,在数12 1212 中出现 111 次,在数 202020 中出现 11 1次,在数 21 中出现 111 次,在数 222222 中出现 22 2次,所以数字2 22 在该范围内一共出现了 666次。
输入:
2个正整数 LLL 和 RRR,之间用一个空格隔开。
输出:
数字 22 2出现的次数。
样例输入1:
2 22
样例输出1:
6
样例输入2:
2 100
样例输出2:
20
说明/提示:1≤L≤R≤100000
解题思路:
这道题不是单纯去判断这个数的各个位数的数字是不是2,而是说,只要这个数的位数中有一个为2,那就算是2出现了一次,例如22这个数,它的个位和十位都是2,所以2就算是出现了两次。
程序代码:
#include<bits/stdc++.h> using namespace std; int main() { int a,b,sum=0; cin>>a>>b; for(int i=a;i<=b;i++) { int n=i; while(n) { if(n%10==2) sum++; n/=10; } } cout<<sum<<endl; return 0; }