题目描述
请统计某个给定范围[L, R][L,R]的所有整数中,数字 22 出现的次数。
比如给定范围[2, 22][2,22],数字2 在数 2中出现了 1 次,在数12 中出现 1次,在数 20 中出现 1次,在数 21 中出现 1 次,在数 22中出现 2次,所以数字2 在该范围内一共出现了 6次。
输入格式
2个正整数 L 和 R,之间用一个空格隔开。
输出格式
数字 2出现的次数。
输入输出样例
输入
2 22
输出
6
输入
2 100
输出
20
说明/提示
1 ≤ L ≤R≤ 1000001≤L≤R≤100000
先看代码
#include <stdio.h>
int main()
{
int l,r,i,count,y;
while(scanf("%d %d",&l,&r)!=EOF)//while(scanf("%d%d",&n,&m)!=EOF)是为了没有输入时跳出循环
{
count=0;//计数器,计算2的个数
for(i=l;i<=r;i++)
{
y=1;// 跳出while循环的工具
while(1)
{
if(i/y%10==2)//i/y的目的是防止22,222这类的数
{
count++;//计数
}
y=y*10;//作用是帮助跳出循环 or 对于22,222这类数
if(i/y==0)
{
break;//跳出while循环
}
}
}
printf("%d",count);
}
return 0;
}
while(scanf("%d %d",&l,&r)!=EOF)的具体作用请参考C语言中的while(scanf("%d%d",&a,&b)!=EOF)_Funnybugaa的博客-CSDN博客_c语言while中scanf