题解 | #[NOIP2013]记数问题#
[NOIP2013]记数问题
http://www.nowcoder.com/practice/28b2d9f2bf2c48de94a1297ed90e1732
因为n范围有限制,所以直接分范围暴力拆分来统计了
#include<stdio.h>
#include<math.h>
int main(){
int n,x,sum=0;
scanf("%d %d",&n,&x);
for(int i=1;i<=n;i++){
if(i>=1&&i<10){
if(i==x){
sum+=1;
}
}else if(i>=10&&i<100){
if(i%10==x){
sum+=1;
}
if(i/10==x){
sum+=1;
}
}else if(i>=100&&i<1000){
if(i%10==x){
sum+=1;
}
if((i/10)%10==x){
sum+=1;
}
if(i/100==x){
sum+=1;
}
}else if(i>=1000&&i<10000){
if(i%10==x){
sum+=1;
}
if((i/10)%10==x){
sum+=1;
}
if((i/100)%10==x){
sum+=1;
}
if(i/1000==x){
sum+=1;
}
}else if(i>=10000&&i<100000){
if(i%10==x){
sum+=1;
}
if((i/10)%10==x){
sum+=1;
}
if((i/100)%10==x){
sum+=1;
}
if((i/1000)%10==x){
sum+=1;
}
if(i/10000==x){
sum+=1;
}
}else if(i>=100000&&i<1000000){
if(i%10==x){
sum+=1;
}
if((i/10)%10==x){
sum+=1;
}
if((i/100)%10==x){
sum+=1;
}
if((i/1000)%10==x){
sum+=1;
}
if((i/10000)%10==x){
sum+=1;
}
if(i/100000==x){
sum+=1;
}
}else{
if(x==0){
sum=sum+6;
}
if(x==1){
sum=sum+1;
}
}
}
printf("%d",sum);
}