P1179 数字统计
题目描述
请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。
比如给定范围[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≤ 100000。
个人感觉字符串是通解,但是数学方法按位提取有没有问题,因为题设已经给出了范围。
#include<stdio.h>
int main(){
int i,j,k,time=0,up,down;
i=j=k=0;
scanf("%d%d",&down,&up);
for(i=down;i<=up;++i){
if(i/10000!=0){
if(i/10000==2){
time++;
}
if(i/1000%10==2){
time++;
}
if(i/100%10==2){
time++;
}
if(i%100%10==2){
time++;
}
if(i%10==2){
time++;
}
}
else if(i/1000!=0){
if(i/1000==2){
time++;
}
if(i/100%10==2){
time++;
}
if(i/10%10==2){
time++;
}
if(i%10==2){
time++;
}
}
else if(i/100!=0){
if(i/100==2){
time++;
}
if(i/10%10==2){
time++;
}
if(i%10==2){
time++;
}
}
else if(i/10!=0){
if(i/10==2){
time++;
}
if(i%10==2){
time++;
}
}
else{
if(i==2){
time++;
}
}
}
printf("%d\n",time);
return 0;
}