Problem Description
已知两个正整数a和b,求在a与b之间(包含a和b)的所有整数的十进制表示中1出现的次数。
Input
多组数据(不超过100000)
每组数据2个整数a,b(1<=a<=b<=100000).
Output
每组数据的答案各占一行。
SampleInput
1 10 10 100 1 2
SampleOutput
2
20
1
思路:预处理打表
代码:
#include<stdio.h>
int main(void){
int a,b;
int count=0;
int s[100010]={0};
for(int i=1;i<=100000;i++){ //预处理打表
int c=i;
while(c){
if(c%10==1) count++;
c/=10;
}
s[i]=count; //存入从1~i 的1的个数
}
while(~scanf("%d%d",&a,&b)){
printf("%d\n",s[b]-s[a-1]); //由计算的是从a~b,s[a]包括在其中,只需减去s[a-1]
int a,b;
int count=0;
int s[100010]={0};
for(int i=1;i<=100000;i++){ //预处理打表
int c=i;
while(c){
if(c%10==1) count++;
c/=10;
}
s[i]=count; //存入从1~i 的1的个数
}
while(~scanf("%d%d",&a,&b)){
printf("%d\n",s[b]-s[a-1]); //由计算的是从a~b,s[a]包括在其中,只需减去s[a-1]
}
return 0;
}
return 0;
}