#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;}
新闻热点
疑难解答