还是熟悉的配方~~~
反恐专家
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll dp[30][30],bit[30];
ll dfs(ll n,ll t,bool up)
{
ll hehe=0,upp;
if(n==0) return 1;
if(up==0&&dp[n][t]!=-1) return dp[n][t];
if(up==1) upp=bit[n];
else upp=9;
for(int i=0;i<=upp;i++)
{
if(t!=4||i!=9) hehe+=dfs(n-1,i,up&&i==upp);
}
if(up==0) dp[n][t]=hehe;
return hehe;
}
ll ans(ll m)
{
ll len;
for(len=0;m>0;m/=10) bit[++len]=m%10;
return dfs(len,0,true);
}
int main()
{
ll a,t;
memset(dp,-1,sizeof(dp));
cin>>t;
while(t--)
{
cin>>a;
cout<<a-ans(a)+1<<endl;
}
}