题目描述
小贾在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;//输出
}