1308 Problem A
请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。
比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出 现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6 次。
输入
输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。
输出
输出共 1 行,表示数字 2 出现的次数。
样例输入
2 22
样例输出
6
提示
【数据范围】
1 ≤ L ≤ R≤ 10000。
提示:
统计某个范围内的整数中给定数字出现的次数,即统计该范围内的整数的各位上的数是否等于该数字,该题目的关键在于如何分离出一个整数的各位数字。具体代码如下(PS:第一次写,不是很会,见谅~~)
源代码
#include <stdio.h>
main()
{
int n,m,i,k,count=0;
scanf("%d %d",&n,&m);
if(n>=1&&m<=10000&&n<=m)//确认输入的数是否在规定范围内
{
for(i=n;i<=m;i++)
{
k=i;
while(k>0)//确保将该数字分离到最高位(注:不可改为k>=0,否则会进入死循环(第一次就习惯性的写成了k>=0,结果没有结果输出))
{
if(k%10==2)
count++;//如果该位的数字与给定的数字相等,则用于计数的count+1
k/=10;//去掉该整数的最后一位
}
}
printf("%d",count);
}
}