NOIP2010-普及组复赛-第一题-数字统计
题目描述 Description
请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。
比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出
现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6
次。
比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出
现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6
次。
输入输出格式 Input/output
输入格式:
输入文件名为 two.in。
输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。
输出格式:
输出文件名为 two.out。
输出共 1 行,表示数字 2 出现的次数。
输入文件名为 two.in。
输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。
输出格式:
输出文件名为 two.out。
输出共 1 行,表示数字 2 出现的次数。
输入输出样例 Sample input/output
样例测试点#1
输入样例:
【输入样例1】
2 22
【输入样例2】
2 100
输出样例:
【输出样例1】
6
【输出样例2】
20
说明 description
1 ≤ L ≤R≤ 10000。
思路:两重循环,判断在这个范围内的每个数是否包含2(每个位数除以10是否为2),计数器++就得了,记得每次要除以10;
代码如下:
1 #include <stdio.h> 2 int main() 3 { 4 int n,m,i,k; 5 int ans=0; 6 //freopen("two.in","r",stdin); 7 //freopen("two.out","w",stdout); 8 scanf("%d%d",&n,&m); 9 for(i=n;i<=m;i++) 10 { 11 k=i; 12 while(k>0) 13 { 14 if(k%10==2) ans++; 15 k=k/10; 16 } 17 } 18 printf("%d\n",ans); 19 return 0; 20 }
我不怕千万人阻挡,只怕自己投降…