楼层编号

题目描述

小贾在NOIP比赛期间住在某个酒店,和其他酒店不一样的是,这个酒店每天都有一个高能的数字t,这个数字在楼层中是不会出现的,以t=3为例,则3、13、31、33等楼层是不存在的,楼层编号是1245,…所以实际上4楼才是3楼。

已知小贾预定了编号为m的房间,并且当天高能数字是t,现在他想知道房间所在的真实楼层是多少。

输入

一行两个整数m和t,1<=m<=100000,0<=t<=9,保证m对t合法。

输出

一行一个整数,表示真实楼层。

样例输入

14 3

样例输出

12

思路:

单纯枚举就OK 找出含有t数字的数的数量 用m减去即得答案

#include<iostream>
using namespace std;
int m,t,ans=0,i,n;
bool f[99999];//标记是否已经判断过
int ju(int a,int b)//瞎自定义一个
{
    for(int j=1;j<=a;j++)//枚举每个数
    {
        n=j;
        while(n>=10)//把每一位分出来
        {
            i=n%10;
            n=n/10;
            if(i==b)//如果含有这个数字
            {
                ans++;
                f[j]=1;//标记已经判断过 避免重复
                break;
            } 
        }
        if(n<10&&n==b&&f[j]!=1) //如果n<10且n等于数字并且这个数没被标记过
        {
            ans++;
        }
    }
    return ans;
}
int main()
{
    cin>>m>>t;
    ju(m,t);
    cout<<m-ans;//输出
}

猜你喜欢

转载自blog.csdn.net/ljqmiao_/article/details/81115768