题解 | #[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);
}
全部评论
何必呢,你这方法没有一般性 而且写起来还麻烦 只要思考一下用下循环就解决了
点赞
送花
回复
分享
发布于 2022-04-15 15:06

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务