P1179 [NOIP2010 普及组] 数字统计
题目描述
请统计某个给定范围[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)的具体作用请参考
上一篇:
IDEA上Java项目控制台中文乱码