#include<stdio.h>
int dp[10];
int a[10];
int dfs(int pos,int last)
{
if(!pos) return 1;
if(!last&&dp[pos]) return dp[pos];
int len=last?a[pos]:9,i,ans=0;
for(i=0; i<=len; i++)
ans+=i==4?0:dfs(pos-1,last&&i==len);//只要这个数包含4就不要
if(!last) dp[pos]=ans;
return ans;
}
int cal(int n)
{
int t_n=n,len=0;
while(n)
a[++len]=n%10,n/=10;
return dfs(len,1);
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",cal(n)-1);
}
return 0;
}
不要4
最新推荐文章于 2024-05-29 22:15:41 发布